Python 通过Pypdf2提取和合并PDF

Python 通过Pypdf2提取和合并PDF,python,python-3.x,pypdf2,Python,Python 3.x,Pypdf2,我有点困了。我正在尝试合并并提取工作目录中所有PDF文件的文本。然后,我想将数据存储在CSV表单中,以便对其运行其他分析。但是,我不断得到一个PyPDF2.utils.PdfReadError:EOF标记未找到错误。我已经检查了资源,但我仍在努力 import PyPDF2 import os from PyPDF2 import PdfFileMerger, PdfFileReader merger = PdfFileMerger() for filename in os.listdir()

我有点困了。我正在尝试合并并提取工作目录中所有PDF文件的文本。然后,我想将数据存储在CSV表单中,以便对其运行其他分析。但是,我不断得到一个
PyPDF2.utils.PdfReadError:EOF标记未找到
错误。我已经检查了资源,但我仍在努力

import PyPDF2
import os
from PyPDF2 import PdfFileMerger, PdfFileReader

merger = PdfFileMerger()
for filename in os.listdir():
    with open(filename,"rb") as source:
        tmp = PdfFileReader(source)
        merger.append(tmp)

tmp.write('tmp.csv', 'wb')
tmp.close()

实际上,您的代码中有一些小错误,您在循环内部创建
tmp
变量
,但在外部使用它
写入csv
。而且,据我所知,您不需要使用open创建
,然后创建用于合并的PdfileReader对象。尝试使用此简单方法合并多个
pdf文件

import PyPDF2
import os
from PyPDF2 import PdfFileMerger, PdfFileReader

merger = PdfFileMerger()

for pdffile in os.listdir():
    merger.append(pdffile)

merger.write('tmp.csv')
merger.close()

此错误何时发生?您确定文件夹中的所有PDF都有效吗?Adobe/Acrobat Reader可以全部读取吗?对不起,tmp=PdfileReader(源代码)行出现错误。所有的文件都是可读的,谢谢你的帮助。我现在收到一个错误,声明:PyPDF2.utils.PdfReadError:EOF marker not found很可能我的一个文件被截断了。有没有处理这个错误的好方法?@Meredith:听起来并不是所有的文件都是可读的。无论如何,Python中处理异常的标准方法是将带有潜在错误的行放在
try
/
except
中,并在
except PyPDF2.utils.PdfReadError:
子句中处理问题(可以通过
pass
忽略它)。@Meredith:很高兴我的评论有所帮助。您可能应该接受这个答案,因为它解决了主要问题。查看使用此代码后是否出现
EOF错误
,这意味着部分
pdf
可能已损坏,并且没有
%EOF
字符。您可以尝试@MeredithJackson建议的
try/except
方法来解决问题。您还可以首先尝试使用异常块中的
文件名打印
语句找出哪个文件有此问题。一旦使用了try语句,它就跳过了,我又能正常工作了,谢谢!