尝试将多个文件夹中的 PDF 合并为每个文件夹的一个 PDF

Trying to combine PDFs from multiple folders into one PDF for each folder

我是 Python/programming 的新手,正在尝试自动执行一项非常耗时的办公任务。

我有多个包含 PDF 的文件夹。对于每个文件夹,我需要将 PDF 合并为一个 PDF,并将其保存在其内容总和的文件夹中。我已经合并了一个文件夹的内容,并使用以下方法成功保存到我的桌面:

import PyPDF2
import os
Path = '/Users/jlaw/Desktop/Testing/FolderName/'
filelist = os.listdir(Path)
pdfMerger = PyPDF2.PdfFileMerger(strict=False)
for file in filelist:
    if file.endswith('.pdf'):
        pdfMerger.append(Path+file)
pdfOutput = open('Tab C.pdf', 'wb')
pdfMerger.write(pdfOutput)
pdfOutput.close()`

我尝试使用以下代码执行上述操作,但针对特定目录中的所有文件夹。当我 运行 执行此操作时,我会正确显示“Tab C.pdf”文件,但我无法打开它们。

import PyPDF2
import os
Path = '/Users/jlaw/Desktop/Testing/'
folders = os.listdir(Path)
def pdf_merge(filelist, foldername):
    pdfMerger = PyPDF2.PdfFileMerger()
    for file in filelist:
        if file.endswith('.pdf'):
            pdfMerger.append(Path+foldername+"/"+file)
        pdfOutput = open(Path+foldername+'/Tab C.pdf', 'wb')
        pdfMerger.write(pdfOutput)
        pdfOutput.close()
for folder in folders:
    pdf_merge(Path+'/'+folder, folder)`

我正在使用 Python 版本:3.8

Tab C.pdf 文件只有 1kb 大小。当我尝试使用 Adob​​e Acrobat 打开时,弹出窗口显示“打开此文档时出错。无法打开此文件,因为它没有页面。如果我尝试 Chrome,它会打开,但它只是一个空的 PDF,对于 Edge(基于 Chromium)它说,“我们无法打开这个文件。出了点问题”

非常感谢任何建议或提示。

下面的作品。我还没有足够的经验来知道为什么这是有效的,而上面没有。

import PyPDF2
import os
Path = 'C:/Users/jlaw/Desktop/Testing/'
folders = os.listdir(Path)
pdfMerger = PyPDF2.PdfFileMerger()
def pdf_merge(filelist): #Changed to just one argument
    pdfMerger = PyPDF2.PdfFileMerger()
    for file in os.listdir(filelist): #added os.listdir()
            if file.endswith('.pdf'):
                pdfMerger.append(filelist+'/'+file) #replaced Path+foldername with filelist
    pdfOutput = open(Path+folder+'/Tab C.pdf', 'wb') #Moved back one tab to prevent infinite loop
    pdfMerger.write(pdfOutput) #Moved back one tab to prevent infinite loop
    pdfOutput.close() #Moved back one tab to prevent infinite loop
for folder in folders:
    pdf_merge(Path+folder)` #Removed redundant + "/"