我陷入了这个问题。我在官方文档页面上跟踪了SO上的许多代码示例,但得到的是:
Python 3.7.0 (default, Aug 22 2018, 20:50:05)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>>
>>> float_list = [1.13, 0.25, 3.28]
>>>
>>> with open('some.csv', "wb") as file:
... writer = csv.writer(file, delimiter=',')
... writer.writerow(float_list)
...
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: a bytes-like object is required, not 'str'
>>>
也有同样的事情
int_list=[1,2,3]
一些建议?
答案 0 :(得分:1)
代码中使用的“ wb”表示您正在写入文件(使用 w ),并且正在以二进制模式进行写入(使用 b )。
由于这个原因,您得到了所看到的错误,告诉写者期望字节,但是随后您正在发送字符串。
请更改:
with open('some.csv', "wb") as file:
收件人:
with open('some.csv', "w") as file:
更多技术细节:
在Windows上,附加到模式的'b'以二进制模式打开文件,因此 还有“ rb”,“ wb”和“ r + b”之类的模式。 Windows上的Python 区分文本文件和二进制文件;行尾 文本文件中的字符在数据 被读取或写入。对文件数据的幕后修改 对于ASCII文本文件来说很好,但是那样会破坏二进制数据 JPEG或EXE文件中。