我一直试图在 Python 中掌握多线程的窍门。然而,每当我试图让它做一些可能被认为有用的事情时,我就会遇到问题。在这种情况下,我有 300 个 PDF 文件。为简单起见,我们假设每个 PDF 上只有一个唯一编号(例如 1 到 300)。我试图让 Python 打开文件,从中获取文本,然后使用该文本相应地重命名文件。我制作的非多线程版本效果惊人。但它有点慢,我想我会看看是否可以加快速度。然而,这个版本找到了第一个文件,正确地重命名它,然后抛出一个错误说:FileNotFoundError: [Errno 2] No such file or directory: './pdfPages/1006941.pdf'它基本上告诉我它找不到该名称的文件。它不能的原因是因为它已经命名了它。在我的脑海中,这告诉我我可能已经在这个循环和/或多线程中搞砸了。任何帮助,将不胜感激。来源:import PyPDF2import osfrom os import listdirfrom os.path import isfile, joinfrom PyPDF2 import PdfFileWriter, PdfFileReaderfrom multiprocessing.dummy import Pool as ThreadPool # Globali=0def readPDF(allFiles): print(allFiles) global i while i < l: i+=1 pdf_file = open(path+allFiles, 'rb') read_pdf = PyPDF2.PdfFileReader(pdf_file) number_of_pages = read_pdf.getNumPages() page = read_pdf.getPage(0) page_content = page.extractText() pdf_file.close() Text = str(page_content.encode('utf-8')).strip("b").strip("'") os.rename(path+allFiles,path+pre+"-"+Text+".PDF") pre = "77"path = "./pdfPages/"included_extensions = ['pdf','PDF']allFiles = [f for f in listdir(path) if any(f.endswith(ext) for ext in included_extensions)] # Get all files in current directoryl = len(allFiles)pool = ThreadPool(4)doThings = pool.map(readPDF, allFiles)pool.close()pool.join()
添加回答
举报
0/150
提交
取消