繁体   English   中英

fitz.open() 在 for 循环中不起作用 (FITZ,PYTHON,PYMUPDF)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM