Chrome подсказывает войти

Примечание. Кажется, это не предпочтительное решение из-за того, как добавлена ​​дополнительная строка в системе Windows. Как указано в python documement :

Если csvfile является файловым объектом, он должен быть открыт с флагом 'b' на платформах, где это имеет значение.

Windows - одна из таких платформ, где это имеет значение. Хотя изменение ограничителя строк, как я описал ниже, возможно, устранил проблему, проблему можно было бы вообще избежать, открыв файл в двоичном режиме. Можно сказать, что это решение более «изящно». «Fiddling» с терминатором линии, вероятно, привел бы к неспортивному коду между системами в этом случае, когда открытие файла в двоичном режиме в системе unix не приводит к эффекту. то есть. это приводит к совместимому с перекрестной системой коду.

Из Документы Python :

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

Оригинал:

Как часть необязательных параметров для csv.writer, если вы получаете лишние пустые строки, вам может потребоваться изменить определитель (info здесь ). Пример ниже адаптирован с страницы python csv docs. Измените его с '\n' на все, что должно быть. Поскольку это всего лишь удар в темноте при этой проблеме, это может работать или не работать, но это мое лучшее предположение.

>>> import csv
>>> spamWriter = csv.writer(open('eggs.csv', 'w'), lineterminator='\n')
>>> spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
>>> spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

0
задан GustavMauler 15 January 2019 в 15:22
поделиться