这是我的剧本:
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次。我在这里做错了什么?
答案 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