Написать список int или float в CSV - PullRequest
0 голосов
/ 09 апреля 2019

Я застрял с этой проблемой.Я следовал за многими примерами кода, найденными здесь на 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]

Некоторые предложения?

1 Ответ

1 голос
/ 09 апреля 2019

«wb», используемый в вашем коде, означает, что вы пишете в файл (используя w ) и что вы пишете в двоичном режиме (используя b ).

По этой причине вы получаете ошибку, которую видите, вы сказали автору ожидать байтов, но затем вы отправляете строки.

Пожалуйста, измените:

with open('some.csv', "wb") as file:

Кому:

with open('some.csv', "w") as file:

Вот еще технические детали:

В Windows добавленный в режим «b» открывает файл в двоичном режиме, поэтому Есть также такие режимы, как 'rb', 'wb' и 'r + b'. Python на Windows делает различие между текстовыми и двоичными файлами; конец строки символы в текстовых файлах автоматически немного изменяются, когда данные читается или пишется. Это закулисное изменение данных файла подходит для текстовых файлов ASCII, но он может испортить двоичные данные в файлах JPEG или EXE.

Вот также ссылка на документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...