首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将PDF与python合并,并使其在某些文件丢失的情况下也能运行?

如何将PDF与python合并,并使其在某些文件丢失的情况下也能运行?
EN

Stack Overflow用户
提问于 2021-03-11 04:21:44
回答 2查看 117关注 0票数 0

我有一个充满PDF的文件夹,我必须以特定的顺序合并其中的一些,所以我创建了一个非常长的代码(非常糟糕的优化,但它应该可以做的工作)

代码语言:javascript
复制
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文件丢失时,不会停止代码,并在下一行代码中重新启动,可能还会打印错误消息。

EN

回答 2

Stack Overflow用户

发布于 2021-03-11 04:32:10

如果在合并前检查文件是否存在呢?

代码语言:javascript
复制
import os.path

def filter_pdf(files):
    for pdf_file in files:
        if os.path.isfile(pdf_file):
            yield pdf_file
票数 1
EN

Stack Overflow用户

发布于 2021-03-11 04:33:43

如果一个文件丢失了,你会得到一个FileNotFoundError。您可以捕获此异常并继续如下所示:

代码语言:javascript
复制
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合并到一个函数中:

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66572299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档