2016-08-25 6 views
0

zipファイルが破損している場合は、このファイルを渡して次のファイルに移動できるようにする必要があります。Python cantはzipfile.BadZipFileからの例外を処理します

私は例外をキャッチしようとしているImの下のコード例で、私はそれを渡すことができます。しかし、私のスクリプトはzipファイルが壊れているときには失敗しています。*、 "通常の"トレースバックエラーを出力します。 "私のエラー"というisteadは表示されますが、zipfileがokならOKです。

これは私が扱っている最小限のコード例です。トレースバックの

path = "path to zipfile" 

from zipfile import ZipFile 

with ZipFile(path) as zf: 
    try: 
     print "zipfile is OK" 
    except BadZipfile: 
     print "Does not work " 
     pass 

部分は私に言っている:BadZipfileを上げ、あなたのコンテキストマネージャ内部try-exceptブロック配置する必要があり

+2

zipfile import BadZipfile'を忘れましたか? – vsminkov

+1

try-exceptは、 'try'の内部で発生するエラーを捕捉するだけです。なぜこのコードは 'try'に入ったのですか? – user2357112

+0

あなたの 'try'ブロックはあなたがそれを持っているのではなく' with'ブロックを囲むべきでしょう。 – FamousJameous

答えて

3

"ファイルはzipファイルではありません":

try: 
    with ZipFile(path) as zf: 
     print "zipfile is OK" 
except BadZipfile: 
    print "Does not work " 

エラーはZipFileであるため、例外が発生した場合はハンドラが見つかりません。さらにBadZipFilezipfileから適切にインポートするようにしてください。