【发布时间】:2020-07-06 06:29:53
【问题描述】:
我正在将文档从 pdf 转换为文本。 pdfs 当前位于一个文件夹中,然后在 txt 转换后保存到另一个文件夹中。我有很多这样的文档,并且更喜欢迭代子文件夹并保存到 txt 文件夹中具有相同名称的子文件夹,但在添加该层时遇到问题。
我知道我可以使用 glob 递归迭代并为文件列表等执行此操作。但不清楚如何将文件从该文件夹保存到新文件夹。这不是完全必要的,但会更加方便和高效。
有什么好办法吗?
import os
import io
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
def convert(fname, pages=None):
if not pages:
pagenums = set()
else:
pagenums = set(pages)
output = io.StringIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)
infile = open(fname, 'rb')
for page in PDFPage.get_pages(infile, pagenums):
interpreter.process_page(page)
infile.close()
converter.close()
text = output.getvalue()
output.close
return text
print(text)
def convertMultiple(pdfDir, txtDir):
if pdfDir == "": pdfDir = os.getcwd() + "\\" #if no pdfDir passed in
for pdf in os.listdir(pdfDir): #iterate through pdfs in pdf directory
fileExtension = pdf.split(".")[-1]
if fileExtension == "pdf":
pdfFilename = pdfDir + pdf
text = convert(pdfFilename)
textFilename = txtDir + pdf.split(".")[0] + ".txt"
textFile = open(textFilename, "w")
textFile.write(text)
pdfDir = r"C:/Users/Documents/pdf/"
txtDir = r"C:/Users/Documents/txt/"
convertMultiple(pdfDir, txtDir)
【问题讨论】:
-
那么如果在子目录中找到了一个pdf文件(例如
C:/Users/Documents/pdf/Setec Astronomy/employees.pdf),你希望将文本文件保存到C:/Users/Documents/txt/Setec Astronomy/employees.pdf还是C:/Users/Documents/txt/employees.pdf? -
@GordonAitchJay 第一个 C:/Users/Documents/txt/Setec Astronomy/employees.txt - 程序负责 txt 部分
标签: python directory glob listdir