2017-05-05 3 views
0

私はPythonを使用していましたが、私はPyPDF2モジュールをインポートしています。私は実際に問題を解決する方法を考え出しましたが、以前のコードがうまくいかなかった理由を知りたいと思います。ここでPython: "import as"キーワードエラー

は、古いコードです:

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であることでした。 2番目のコードはStackOverflowでこのモジュールを使用した人の数に似ており、完全に動作します。私の質問は、なぜ合併としてPdfFileMergerをインポートした後に、私が「合併」と正しく協力していたことを考えれば、最初のコードが私に期待した結果をもたらさなかったのでしょうか?

ありがとうございました!

+0

すべての '合併()'呼び出しは新しい 'PdfFileMerger'になります。 – user2357112

答えて

1

前のコメントメモと同様に、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") 
+0

私は今それを得る。あなたとuser2357112の両方に感謝します。 –