[英]fitz.open() not working when in a for loop (FITZ,PYTHON,PYMUPDF)
尝试使用 PyMuPDF 中的 fitz 遍历目录('PDFS')中的文件时,我遇到了困难。 问题是,当我只是在做 document =“somepdf.pdf”时,代码就可以工作,但是一旦我插入一个 for 循环并尝试以这种方式访问文件,就会出现这个错误:
文件名、stream、文件类型、矩形、宽度、高度、字体大小
这是代码:
for file in os.listdir('PDFS'):
if fnmatch.fnmatch(file, '*.pdf'):
document = file
doc = fitz.open(document)
感谢您的帮助!
您要打开的 pdf 文件位于子目录PDFS
下,例如PDFS/sample.pdf
,而您的代码fitz.open(document)
是在当前工作目录下打开文件。 因此,修复应该是:
import fitz
import os
import fnmatch
for file in os.listdir('PDFS'):
if fnmatch.fnmatch(file, '*.pdf'):
document = os.path.join('PDFS', file)
doc = fitz.open(document)
此外,使用了相对路径PDFS
,因此您必须在PDFS
所在的路径下运行代码,例如/your/workspace/
:
/your/workspace > python code.py
否则,
/your > python workspace/code.py
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'PDFS'
所以,一个好的做法是
如果PDFS
只是用户输入路径,则使用完整路径; 否则,
使用脚本路径的相对路径
script_path = os.path.abspath(__file__) project_path = os.path.dirname(script_path) pdfs_path = os.path.join(project_path, 'PDFS')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.