我正在使用Python 3.6.5。
您好,我遇到编码问题。我认为这个问题与尝试同时使用base58和utf-8有关。这部分程序在Python 2.7.14中工作,我试图将其转换为Python 3.6.5。
def save_asset(asset):
nameString = '{0}_!_{1}'.format(asset['Name'].encode('utf-8').strip(), asset['AssetTypeID'])
filename = base58.b58encode(nameString)+'.png'
Cmd输出:
File "Transfer.py", line 315, in start_download
saveAttempt = save_asset(a)
File "Transfer.py", line 221, in save_asset
filename = base58.b58encode(nameString)+'.png'
TypeError: can't concat str to bytes
答案 0 :(得分:1)
也许b58encode
(来自您正在使用的任何库)以与标准库中b64encode
相同的特殊方式工作,并返回一个字节数组,而不是文本字符串。
如果您希望filename
成为字节数组,请改用b".png"
。如果您希望它是一个文本字符串,请使用b58encode
解码.decode("ascii")
返回的字节(许多其他编码也应该有效,但那个编码是有效的。)
答案 1 :(得分:0)
base58.b58encode(nameString)
是字节类型。您不能将字符串'.png'
与字节类型连接起来。
您可以使用如下
filename = base58.b58encode(nameString)+base58.b58encode('.png')
print(filename)
>>b'blah-blah-byte-string'