簡體   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