1

我正在使用 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'

命令输出:

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
4

2 回答 2

1

也许b58encode(来自您使用的任何库)以与b64encode标准库相同的特殊方式工作,并返回一个字节数组,而不是文本字符串。

如果您希望您filename成为字节数组,请b".png"改用。如果您希望它是文本字符串,请b58encode使用 using解码返回的字节.decode("ascii")(许多其他编码也应该有效,但这种编码很有效)。

于 2018-04-26T22:30:03.607 回答
0

base58.b58encode(nameString)是字节类型。您不能将字符串'.png'与字节类型连接起来。

你可以像下面这样使用

filename = base58.b58encode(nameString)+base58.b58encode('.png')
print(filename)
>>b'blah-blah-byte-string'
于 2018-04-26T22:31:47.693 回答