Всегда ли Python csv Writer использует символы конца строки в DOS? - PullRequest
33 голосов
/ 23 марта 2012

Я понимаю, что библиотека csv в Python всегда генерирует символы конца строки DOS.Даже если я использую режим 'wb', даже если я использую Linux.

import csv

f = open('output.txt', 'wb');
writer = csv.writer(f)
writer.writerow([2,3,4]);
f.close()

В приведенном выше коде всегда используется '\r\n' в качестве разделителя конца строки.Как я могу заставить его использовать только '\n'? 1009 *

Ответы [ 2 ]

60 голосов
/ 23 марта 2012

Вы можете дать вашему экземпляру writer пользовательский аргумент lineterminator в конструкторе:

writer = csv.writer(f, lineterminator="\n")
24 голосов
/ 30 апреля 2015

Когда Никлас ответил , аргумент lineterminator позволяет вам выбрать окончание строки. Вместо того, чтобы жестко кодировать его в \n, сделайте его независимым от платформы, используя разделитель строк вашей платформы : os.linesep.

* * 1010

Для тех, кто находит этот пост, не пропустите 'wb'. Вы не заметите проблему, если пропустите ее на некоторых платформах, таких как GNU / Linux, но важно открыть файл в двоичном режиме на платформах, где это важно, например, в Windows. В противном случае файл csv может заканчиваться окончанием строки, например \r\r\n. Если вы используете 'wb' и os.linesep, окончания строк должны быть правильными на всех платформах.

...