python - FileNotFound 错误/使用 PyPDF2 和 os.listdir() 读取 PDF 文件
问题描述
我有以下脚本将几个 PDF 合并在一起:
import PyPDF2
import sys
import os
inputs = sys.argv[1]
list = os.listdir(inputs)
merger = PyPDF2.PdfFileMerger()
for pdf in list:
merger.append(pdf)
merger.write('merged.pdf')
print('All done')
包含文件的文件夹与运行脚本位于不同的目录中,因此我插入了完整路径。
从终端像这样运行时python3 pdf-merger.py /Users/user/Documents/pdf_list
,我收到以下错误:
Traceback (most recent call last):
File "pdf-merger.py", line 11, in <module>
merger.append(pdf)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/PyPDF2/merger.py", line 203, in append
self.merge(len(self.pages), fileobj, bookmark, pages, import_bookmarks)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/PyPDF2/merger.py", line 114, in merge
fileobj = file(fileobj, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: 'card.pdf'
我还尝试了另一种方法:
import PyPDF2
import sys
import os
inputs = sys.argv[1]
list = [os.path.join(inputs,a) for a in os.listdir(inputs)]
merger = PyPDF2.PdfFileMerger()
for pdf in list:
merger.append(pdf)
merger.write('merged.pdf')
print('All done')
这次我得到一个PyPDF2.utils.PdfReadError: Could not read malformed PDF file
,不管它是什么文件。
有任何想法吗?
解决方案
发现了问题。目录中有一个隐藏.DS_Store
文件损坏了脚本。
忽略它if pdf.endswith('.pdf')
解决了问题!
推荐阅读
- python - 具有树结构节点的散点图?
- http - 如何防止网站检测到 Fiddler
- python - 如何从 json 文件创建自定义查询集
- automata - 为以下语法设计 NDPA(下推自动机)
- javascript - 如何从 POST 响应中播放音频?
- java - 在android studio中制作热点二维码
- java - 构建器模式和扩展自身的泛型类型
- c# - C# Exchange Web 服务托管 API 模拟 -> Microsoft Graph API
- javascript - 如何使用 React 和 JSX 为按钮分配整数值?
- python - 用于大型文本文件的 numpy loadtxt