我正在使用base64模块作为b64decode()函数,但是某些文本字符串会抛出此错误:
'binascii.Error: Incorrect Padding'.
据我所知,这是因为字符串长度不是4的倍数,这是base64编码文本的要求。
我不想仅仅将'='添加到字符串的末尾以使其成为4的倍数,而是希望捕获错误并简单地声明该字符串不是base64编码的。它使用一般的'except:',但是我想捕获特定的错误,但我找不到相同的错误,因为它不像其他错误那样具体,并且'除了binascii.Error: '显然是不确定的。帮助
答案 0 :(得分:7)
异常类型存储在binascii.Error
中,有多种方法可以捕获异常:
# 1. you can import the binascii module
import binascii
try:
pass
except binascii.Error as err:
pass
# 2. or you can use the binascii from base64's namespace
try:
pass
except base64.binascii.Error as err:
pass
# 3. or you can use __import__ to do a temp import
try:
pass
except __import__('binascii').Error as err:
pass
答案 1 :(得分:2)
原因
except binascii.Error
不起作用是因为binascii是从base64命名空间中导入的,所以它在我的工作命名空间中是未定义的。捕获错误的正确方法是
except base64.binascii.Error
不成熟的错误