-1

我正在尝试将 PDF 文件合并到一个文件夹中

我尝试从同一目录运行代码,但是当我将代码复制到不同的位置并指定 PDF 文件的目录路径时,合并过程没有发生,并且我不断收到错误。

from PyPDF2 import PdfFileMerger
import glob

x = glob.glob("*pdf")
merger = PdfFileMerger()
 
for pdf in x:
    merger.append(open(pdf, 'rb'))
 
with open("result.pdf", "wb") as fout:
    merger.write(fout)

这是我在源代码文件夹位置向上一个文件夹时编写的代码

x = [a for a in os.listdir('./merge_pdf') if a.endswith(".pdf")]
for pdf in x:
    merger.append(open(pdf, 'rb'))
 
with open("./merge_pdf/result.pdf", "wb") as fout:
    merger.write(fout)

--->FileNotFoundError: [Errno 2] No such file or directory: '1.pdf'

出于这个原因,我从我的 PDF 文件夹中运行我的所有代码,我知道这不是一个好习惯。

谁能帮我解决这个问题,我只是在我的早期学习阶段。

我也试过这个

with open("result.pdf", "wb") as fout:
    merger.write("./merge_pdf/"+fout)
4

1 回答 1

0

glob.glob返回文件的完整路径,而os.listdir只给出文件名。坚持使用 glob。

from PyPDF2 import PdfFileMerger
import glob

x = glob.glob("merge_pdf/*pdf")
merger = PdfFileMerger()
 
for pdf in x:
    merger.append(open(pdf, 'rb'))
 
with open("merge_pdf/result.pdf", "wb") as fout:
    merger.write(fout)

另一个不错的选择是pathlib模块。

from PyPDF2 import PdfFileMerger
from pathlib import Path

dir_path = Path("merge_pdf")
result_pdf = dir_path/"result.pdf"

merger = PdfFileMerger()
 
for pdf in dir_path.glob("*pdf"):
    merger.append(pdf.open('rb'))
 
with result_pdf.open("wb") as fout:
    merger.write(fout)
于 2021-01-14T20:37:02.770 回答