2016-08-10 66 views
0

这里是我的脚本:zipfile.extractall总是给人例外

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 

这些password.txt的内容:

abcde 
fghijk 
secret 
lmnopq 
rstw 
uvwxyz 

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

回答

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 
+0

的事情是,它从来没有解压缩文件,我检查 –

+0

那么为什么不是为什么它不解压文件,你对你的脚本为什么得到五种异常问题? (提示:如果它没有给你一个错误,它解压缩文件,问题是,在哪里?) – kindall

+0

它进入异常块,因此它永远不会解压缩文件 –