2016-08-25 2 views
0

zip 파일이 손상된 경우 처리해야하므로이 파일을 전달하고 다음 파일로 넘어갈 수 있습니다.파이썬 캔트는 zipfile.BadZipFile의 예외를 처리하지 않습니다.

Im을 예외를 잡으려고 시도하는 코드 예제에서 전달할 수 있습니다. 그러나 zipfile이 손상되었을 때 스크립트가 실패하고 * "정상적인"추적 오류 * "내 오류"를 인쇄하는 istead를 제공하지만 zipfile이 정상이면 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

"파일은 압축 파일이 아닙니다"

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

ZipFile에 의해 발생하므로 외부에두면 발생 된 예외에 대한 처리기가 없습니다. 또한 BadZipFilezipfile에서 적절하게 가져와야합니다.

관련 문제