使用Python PyPDF2合并PDF文件

4

我看了一个视频学习如何将PDF文件合并成一个文件。我试图在代码中做一些修改,以便处理一个包含PDF文件的文件夹。主文件夹(Spyder)有一个Demo.py文件,以下是代码:

import os
from PyPDF2 import PdfFileMerger

source_dir = os.getcwd() + './PDF Files'
merger = PdfFileMerger()

for item in os.listdir(source_dir):
    if item.endswith('pdf'):
        merger.append(item)

merger.write('.PDF Files/Output/Complete.pdf')       
merger.close()

我有一个名为PDF Files的子文件夹,它位于主文件夹Spyder中,在这个子文件夹中,我放置了PDF文件,并在子文件夹PDF Files中创建了一个名为Output的文件夹。 当循环打印item时,虽然我得到了PDF名称,但对于1.pdf,我收到了文件未找到的错误。
错误的回溯信息:
Traceback (most recent call last):
  File "demo.py", line 9, in <module>
    merger.append(item)
  File "C:\Users\Future\AppData\Local\Programs\Python\Python36\lib\site-packages\PyPDF2\merger.py", line 203, in append
    self.merge(len(self.pages), fileobj, bookmark, pages, import_bookmarks)
  File "C:\Users\Future\AppData\Local\Programs\Python\Python36\lib\site-packages\PyPDF2\merger.py", line 114, in merge
    fileobj = file(fileobj, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '1.pdf'

请将错误的完整回溯添加到您的问题中。 - martineau
2个回答

7

我可以这样解决它

import os
from PyPDF2 import PdfFileMerger

source_dir = './PDF Files/'
merger = PdfFileMerger()

for item in os.listdir(source_dir):
    if item.endswith('pdf'):
        #print(item)
        merger.append(source_dir + item)

merger.write(source_dir + 'Output/Complete.pdf')       
merger.close()

2
更短、更快、更强!
import glob
from PyPDF2 import PdfMerger

merger = PdfMerger()

for file in glob.glob('PDF_Folder/*.pdf'):
    merger.append(file)

merger.write('Complete.pdf')       
merger.close()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接