我有问题,需要你的帮助。我通过“使用Python自动化无聊的东西”来学习Python。我目前在第13章,处理PDF文件和Word文档。我从书中得到了这些代码。它基本上没有第一页的pdf文件。但在我运行该程序后,我没有看到任何PDF文件弹出。我试着在目录中找到它,但它不存在。所以帮我找到那个文件,谢谢!这是代码
import PyPDF2
import os
pdfFiles = []
for filename in os.listdir('.'):
if filename.endswith('.pdf'):
pdfFiles.append(filename)
pdfFiles.sort(key=str.lower)
pdfWriter = PyPDF2.PdfFileWriter()
or filename in pdfFiles:
pdfFileObj = open(filename, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
for pageNum in range(1, pdfReader.numPages):
pageObj = pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
pdfOutput = open('allminutes.pdf', 'wb')
pdfWriter.write(pdfOutput)
pdfOutput.close()
代码中有一些缺失的缩进,拼写错误。修好之后,我可以按预期合并两个PDF文件。
更新
由于您还无法获得输出PDF文件,让我们通过显示合并的PDF文件的页数来检查它是否真的是创建的。
我正在为输入的PDF文件(input_files
)使用输入文件夹。
merge_pdfs.py
遍历input_files
中的所有PDF文件,并通过跳过每个PDF文件的第一页将它们合并到allminutes.pdf
。
在运行代码之前,文件夹结构:
├── input_files
│ ├── module.pdf
│ └── pypi.pdf
├── merge_pdfs.py
├── requirements.txt
└── screenshots
└── demo_output.png
运行代码后,文件夹结构:
├── allminutes.pdf
├── input_files
│ ├── module.pdf
│ └── pypi.pdf
├── merge_pdfs.py
├── requirements.txt
└── screenshots
└── demo_output.png
merge_pdfs.py
:
import PyPDF2
import os
pdfFiles = []
outputFile = 'allminutes.pdf'
inputFileDirectory = 'input_files'
for filename in os.listdir(inputFileDirectory):
if filename.endswith('.pdf'):
pdfFiles.append(inputFileDirectory+os.sep+filename)
pdfFiles.sort(key=str.lower)
pdfWriter = PyPDF2.PdfFileWriter()
for filename in pdfFiles:
pdfFileObj = open(filename, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
for pageNum in range(1, pdfReader.numPages):
pageObj = pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
pdfOutput = open(outputFile, 'wb')
pdfWriter.write(pdfOutput)
pdfOutput.close()
print("Done merging the pdf files to {}".format(outputFile))
pdfFile = PyPDF2.PdfFileReader(open(outputFile, "rb"))
# print how many pages outputFile has:
print("{} has {} pages.".format(outputFile, pdfFile.getNumPages()))
生成的allminutes.pdf
文件:
merge_pdfs.py
的输出:
Done merging the pdf files to allminutes.pdf
allminutes.pdf has 4 pages.