Python3 |预期类型 'union[bytes, bytearray],得到的是 'str'
Python3 | Expected type 'union[bytes, bytearray], got 'str' instead
我有一个稳定的工作项目 python。 python 2.7 上的 运行。我把它升级到 python 3.x。所以,它不适用于 Python3.
逻辑是将值写入 csv 文件。
损坏的代码是:
csv = io.BytesIO()
csv.write('fiscalYear\t'
'VKN\t'
'recordPeriod\t'
'enteredBy\t'
'entredDate\t'
'entryNumber\t'
'entryComment\t'
'batchID\t'
'batchDescription\t'
'totalDebit\t'
'totalCredit\t'
'amountOriginalExchangeRate\t'
'amountOriginalExchangeRateSource\t'
'amountOriginalExchangeRateComment\n'
)
return csv.getvalue()
我的问题是:
Expected type 'union[bytes, bytearray], got 'str' instead
Python 日志错误:
TypeError: a bytes-like object is required, not 'str'
我需要你的帮助!
如错误消息所述,您应该传递二进制数据,而不是字符串。而不是
csv.write(my_text)
写
csv.write(my_text.encode())
将其转换为二进制。
您正在将字符串 (Unicode) 写入 BytesIO 对象。您可能应该将 BytesIO 切换为 StringIO。如果你真的想要字节,你可以使用他们的 encode()
方法将你的 Unicode 字符串转换为字节,传递你喜欢的编码方案(例如 'utf-8'
)。
我有一个稳定的工作项目 python。 python 2.7 上的 运行。我把它升级到 python 3.x。所以,它不适用于 Python3.
逻辑是将值写入 csv 文件。
损坏的代码是:
csv = io.BytesIO()
csv.write('fiscalYear\t'
'VKN\t'
'recordPeriod\t'
'enteredBy\t'
'entredDate\t'
'entryNumber\t'
'entryComment\t'
'batchID\t'
'batchDescription\t'
'totalDebit\t'
'totalCredit\t'
'amountOriginalExchangeRate\t'
'amountOriginalExchangeRateSource\t'
'amountOriginalExchangeRateComment\n'
)
return csv.getvalue()
我的问题是:
Expected type 'union[bytes, bytearray], got 'str' instead
Python 日志错误:
TypeError: a bytes-like object is required, not 'str'
我需要你的帮助!
如错误消息所述,您应该传递二进制数据,而不是字符串。而不是
csv.write(my_text)
写
csv.write(my_text.encode())
将其转换为二进制。
您正在将字符串 (Unicode) 写入 BytesIO 对象。您可能应该将 BytesIO 切换为 StringIO。如果你真的想要字节,你可以使用他们的 encode()
方法将你的 Unicode 字符串转换为字节,传递你喜欢的编码方案(例如 'utf-8'
)。