为了账号安全,请及时绑定邮箱和手机立即绑定

Python 多线程问题文件操作

Python 多线程问题文件操作

慕盖茨4494581 2021-06-22 15:59:53
我一直试图在 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()
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号