這條線應該已經工作,如果你會一直這樣調用:
decoded_clean_pk = clean_pk.decode('base64', 'strict')
注意strict
必須是一個string
,否則Python解釋器將嘗試尋找一個名爲strict
變量,如果它沒有找到它或者具有其他值:strict
,ignore
和replace
,它可能會抱怨它。
看看這個代碼:
>>>b=base64.b64encode('hello world')
>>>b.decode('base64')
'hello world'
>>>base64.b64decode(b)
'hello world'
兩個decode
和b64decode
時.decode
傳遞的base64
參數字符串的工作原理相同。
區別在於str.decode
會將一串字節作爲參數並根據您作爲第一個參數傳遞的encoding
參數返回它的Unicode表示形式。在這種情況下,你告訴它處理一個bas64
字符串,以便它可以正常工作。
要回答你的問題,無論是工作原理相同,但b64decode/encode
旨在僅使用Base64編碼工作,併爲圖書館意識到str.decode
可以處理多達編碼。
欲瞭解更多信息,請閱讀兩個文檔部分:decode
和b64decode
。
UPDATE:其實,這也是我猜:)看看源代碼encodings/base64_codec.py
這是decode()
使用的最重要的例子:
def base64_decode(input,errors='strict'):
""" Decodes the object input and returns a tuple (output
object, length consumed).
input must be an object which provides the bf_getreadbuf
buffer slot. Python strings, buffer objects and memory
mapped files are examples of objects providing this slot.
errors defines the error handling to apply. It defaults to
'strict' handling which is the only currently supported
error handling for this codec.
"""
assert errors == 'strict'
output = base64.decodestring(input)
return (output, len(input))
正如你可以真正看到,它使用base64
模塊來做到這一點:)
希望這可以澄清你的問題。
我用*最後一個例子更新了答案!*;) –