以下代码(试图“打开”一个提供错误密码的加密 RAR 文件):
from unrar import rarfile
import unrar
try:
rarfile.RarFile("encrypted.rar", pwd="wrong_password")
except Exception as e:
print(type(e))
print(e)
大多数情况下,虽然 RAR 文件没有其他问题(可以使用正确的密码解密而不会出错),但输出:
<class 'unrar.rarfile.BadRarFile'>
Invalid RAR file.
但有时它会输出:
<class 'RuntimeError'>
Bad password for Archive
如何在不链接异常的情况下使用 Python 的 UnRAR 库检查 RAR 文件的密码是否正确?
简而言之:UnRAR 库针对相同类型的错误(即提供的错误密码)引发(随机?)不同的异常。在大多数情况下,它会加注,但有时会加注。捕捉已经够糟糕了(但在这里我们至少可以检查),但如果也捕捉到,甚至无法区分 (a) 密码错误或 (b) RAR 文件错误的错误。BadRarFile
RuntimeError
RuntimeError
args
except unrar.rarfile.BadRarFile