我一直在使用Python,并且正在导入PyPDF2模块。实际上,我已经知道了如何解决问题,但是我想知道为什么我以前的代码不能工作。
这是旧代码:
from PyPDF2 import PdfFileMerger as merger, PdfFileReader
def MakeOne(filesList):
for file in filesList:
merger().append((file))
merger().write("AllInOne.pdf")
print("File AllInOne.pdf has been created")这是现在工作的当前代码。
from PyPDF2 import PdfFileMerger, PdfFileReader
def MakeOne(filesList):
merger = PdfFileMerger()
for file in filesList:
merger.append((file))
merger.write("AllInOne.pdf")
print("File AllInOne.pdf has been created")第一段代码没有使控制台崩溃--实际上它确实创建了一个文件。唯一的问题是它创建的文件是不可操作的,只有1KB大。第二段代码类似于有多少人在StackOverflow中使用了这个模块,并且工作非常完美。我的问题是:为什么第一段代码没有为我提供预期的结果,因为在将PdfFileMerger作为合并导入之后,我似乎正确地处理了“合并”?
感谢您提供的任何帮助!
发布于 2017-05-06 00:11:25
正如前面的注释所指出的那样,每次调用merger()时,都会创建一个新的PdfFileMerger对象。因此,当您调用merger().write("AllInOne.pdf")时,您正在编写一个没有附加文件的PDF。
当您使用import <module> as时,您是在“混叠”导入的模块。因此,您的第一个代码块与以下代码完全相同:
from PyPDF2 import PdfFileMerger, PdfFileReader
def MakeOne(filesList):
for file in filesList:
PdfFileMerger().append((file))
PdfFileMerger().write("AllInOne.pdf")
print("File AllInOne.pdf has been created")https://stackoverflow.com/questions/43815237
复制相似问题