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')。