如何捕获我期望的特定异常?

How do I catch a particular exception that I am expecting?

我一直在尝试制作一个简单的 zip 文件密码破解程序(只是为了好玩,不是恶意目的)但是我的 try and except 语句不起作用。无论输入什么,它总是导致 except 语句,并且永远不会执行 else(即使 zip 文件确实提取)

import zipfile

k = 0
file = zipfile.ZipFile('john.zip')
def check(i):
    p = bytes(i, 'ascii')
    try:
        file.extractall(pwd=p)
    except:
        return False
    else:
        return True

def crack():
        x = open('john(1).txt', 'r')
        for i in x.readlines():
            i.strip('\n')
            k = check(i)
            if k == True:
                print('Password is: ' + k)
                break;
            x.close()
        x.close()`

1) 在 except 块中记录错误。很有帮助。

2) 您正在 'for' 循环中关闭文件。坏主意,因为循环从文件中读取行。

3)最后一行末尾有一个反引号字符(可能是题中的错字):`

我在 crack() 中做了一些更改,如下面的评论所示。这是对我有用的:

…
def crack():
    x = open('john(1).txt', 'r')
    for i in x.readlines():
        i = i.strip() # not just the statement i.strip('\n')
        k = check(i)
        if k == True:
            print('Password is: ' + i) # not print('Password is: ' + k)
…