Примечание: кажется, что это не предпочтительное решение из-за того, как дополнительная система была добавлена в системе Windows. Как указано в документе Python :
Если csvfile является файловым объектом, он должен быть открыт с флагом 'b' на платформах, где это имеет значение.
Windows - одна из таких платформ, где это имеет значение. Хотя изменение разделителя строки, как я описал ниже, возможно, решило проблему, проблему можно полностью избежать, открыв файл в двоичном режиме. Можно сказать, что это решение более «элегантно». В этом случае «путаница» с ограничителем строки, вероятно, привела бы к непереносимости кода между системами, когда открытие файла в двоичном режиме в системе Unix не дает никакого эффекта. то есть. это приводит к кросс-совместимому коду.
Из документов Python :
В Windows добавленный к режиму «b» открывает файл в двоичном режиме, поэтому существуют также режимы, такие как «rb», «wb» и «r + b». Python в Windows делает различие между текстовыми и двоичными файлами; символы конца строки в текстовых файлах автоматически слегка изменяются при чтении или записи данных. Это закулисное изменение данных файла подходит для текстовых файлов ASCII, но оно повредит двоичные данные, подобные этим в файлах JPEG или EXE. Будьте очень осторожны, используя двоичный режим при чтении и записи таких файлов. В Unix не помешает добавить 'b' в режим, так что вы можете использовать его независимо от платформы для всех двоичных файлов.
Оригинал :
Как часть необязательных параметров для csv.writer, если вы получаете дополнительные пустые строки, вам, возможно, придется изменить определитель строки (информация здесь ). Пример ниже адаптирован со страницы 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'])