11

我将 base64 模块用于 b64decode() 函数,但是某些文本字符串会引发此错误:

'binascii.Error: Incorrect Padding'.

我知道这是因为字符串的长度不是 4 的倍数,这是 base64 编码文本的要求。

我不想仅仅在字符串的末尾添加 '=' 以使其成为 4 的倍数,而是要捕获错误并简单地声明字符串不是 base64 编码的。它使用一般的'except:'工作,但是我想捕获特定的错误,但我找不到相同的错误,因为它不像其他错误那样非常具体,并且'除了 binascii.Error: ' 显然是未定义的。帮助?

4

2 回答 2

16

异常类型存储在 中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
于 2017-04-22T15:58:10.117 回答
5

原因

except binascii.Error

不起作用是因为 binascii 是从 base64 命名空间中导入的,所以它在我的工作命名空间中未定义。捕获错误的正确方法是

except base64.binascii.Error

电枢错误

于 2017-04-22T15:54:07.913 回答