我有一个充满PDF的文件夹,我必须以特定的顺序合并其中的一些,所以我创建了一个非常长的代码(非常糟糕的优化,但它应该可以做的工作)
from PyPDF2 import PdfFileMerger
pdfs = ['Base.pdf','1.pdf']
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(pdf)
merger.write("Result_1.pdf")
merger.close()
pdfs = ['Base.pdf','1.pdf','2.pdf']
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(pdf)
merger.write("Result_2.pdf")
merger.close()代码重复120次,使用不同的组合。
我可能遗漏了一些文件,所以当代码发现丢失的文件时就会停止。
我认为它可能包含了一些东西,当一些pdf文件丢失时,不会停止代码,并在下一行代码中重新启动,可能还会打印错误消息。
发布于 2021-03-11 04:32:10
如果在合并前检查文件是否存在呢?
import os.path
def filter_pdf(files):
for pdf_file in files:
if os.path.isfile(pdf_file):
yield pdf_file发布于 2021-03-11 04:33:43
如果一个文件丢失了,你会得到一个FileNotFoundError。您可以捕获此异常并继续如下所示:
from PyPDF2 import PdfFileMerger
pdfs = ['Base.pdf','1.pdf', 'missing.pdf', '2.pdf']
merger = PdfFileMerger()
for pdf in pdfs:
try:
merger.append(pdf)
except FileNotFoundError:
print("Skipping file %s" % pdf)
merger.write("Result_1.pdf")
merger.close()如果你想要清理你的代码,把pdf合并到一个函数中:
from PyPDF2 import PdfFileMerger
def merge_pdfs(pdfs, merged_file):
merger = PdfFileMerger()
for pdf in pdfs:
try:
print("Merging file %s" % pdf)
merger.append(pdf)
except FileNotFoundError:
print("Skipping file %s" % pdf)
print("Writing result file")
merger.write(merged_file)
merger.close()
pdfs = ['Base.pdf','1.pdf']
merge_pdfs(pdfs, "Result1.pdf")
pdfs = ['Base.pdf','1.pdf','2.pdf']
merge_pdfs(pdfs, "Result2.pdf")https://stackoverflow.com/questions/66572299
复制相似问题