zipfile.extractall总是给出异常

时间:2016-08-10 17:54:08

标签: python python-2.7 zipfile

这是我的剧本:

import zipfile
zFile = zipfile.ZipFile('crack.zip')
passFile = open('passwords.txt')
for line in passFile.readlines():
    password = line.strip('\n')
    try:
        zFile.extractall(pwd=password)
        print password
    except Exception, e:
    print e

这些是passwords.txt的内容:

abcde
fghijk
secret
lmnopq
rstw
uvwxyz

文件passwords.txt有5个字符串,其中只有一个是此zip文件的正确密码(正如您猜到的那样,secret是正确的密码)。当我运行这个脚本时,它总是进入catch块并打印('Bad password for file', <zipfile.ZipInfo object at 0x7f70836d52a8>) 5次。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

使用正确的密码成功解压缩文件后,您不会停止循环。因此它继续并尝试其他三个密码。您的文件中有五个不正确的密码,因此您有五个例外。要解决此问题,请添加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