我有一个稳定的python工作项目。它在python 2.7上运行。我将其升级到python3.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'
我需要你的帮助!
答案 0 :(得分:0)
如错误消息所述,您应该传递二进制数据,而不是字符串。代替
csv.write(my_text)
写
csv.write(my_text.encode())
将其转换为二进制。
答案 1 :(得分:0)
您正在将字符串(Unicode)写入BytesIO对象。您可能应该将BytesIO切换为StringIO。如果您确实需要字节,则可以使用其encode()
方法将Unicode字符串转换为字节,并传递您首选的编码方案(例如'utf-8'
)。