2016-08-10 12 views
0

を与える私のスクリプトですzipfile.extractallはいつもここで例外

abcde 
fghijk 
secret 
lmnopq 
rstw 
uvwxyz 

ファイルpasswords.txtは、そのうちの5つの文字列を、持っているだけ1つはこのzipファイルの正しいパスワードです(あなたが推測したように、秘密は正しいパスワードです)。このスクリプトを実行すると、常にcatchブロックに行き、('Bad password for file', <zipfile.ZipInfo object at 0x7f70836d52a8>)を5回印刷します。私はここで間違って何をしていますか?

答えて

0

適切なパスワードでファイルを解凍した後、ループを停止しません。したがって、それは続行し、他の3つのパスワードを試みます。ファイルに5つの間違ったパスワードがあるので、5つの例外があります。これを修正するには、breakステートメントを追加します。私はあなたのコードを少し並べ替えました。通常、例外をキャッチするステートメントだけがtryブロックにある必要があるためです。

for line in passFile: 
    password = line.strip() 
    print password 
    try: 
     zFile.extractall(pwd=password) 
    except Exception, e: 
     print e 
    else: 
     print "success" 
     break 
+0

事は、私が –

+0

を確認し、そのファイルを解凍ことはありません、ですなぜあなたのスクリプトではなく、それはファイルを解凍しない理由の5つの例外を取得する理由についてご質問はありますか? (ヒント:エラーが出ない場合は、ファイルを解凍しています。質問はどこですか?) – kindall

+0

例外ブロックに入るので、ファイルを解凍することはありません –

関連する問題