Python:“导入为”关键字错误

时间:2017-05-05 23:56:38

标签: python module pypdf2

我一直在使用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")

第一段代码没有崩溃控制台 - 事实上它确实创建了一个文件。唯一的问题是它创建的文件不可打开,只有1 KB大。第二段代码类似于在StackOverflow中使用此模块的人数,它完美地运行。我的问题是:为什么第一段代码没有为我提供预期的结果,因为在将PdfFileMerger作为合并导入后,我似乎正确地使用了“合并”?

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

如前面的评论所述,每次拨打merger()时,您都会创建一个新的PdfFileMerger对象。因此,当您致电merger().write("AllInOne.pdf")时,您正在编写一个没有附加文件的PDF。

当您使用import <module> as时,您就会混淆&#39;&#39;&#39;导入的模块。因此,您的第一个代码块与以下内容完全相同:

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")