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