Подтвердить что ты не робот

Как я могу заставить Python file.write() использовать тот же формат новой строки в Windows, что и в Linux ( "\ r\n" против "\n" )?

У меня есть простой код:

f = open('out.txt','w')
f.write('line1\n')
f.write('line2')
f.close()

Код работает в окнах и дает размер файла 12 bytes, а linux дает 11 bytes Причина - новая строка

В linux это \n, а для win это \r\n

Но в моем коде я указываю новую строку как \n. Вопрос в том, как я могу заставить python поддерживать новую строку как \n всегда, а не проверять операционную систему.

4b9b3361

Ответ 1

Вам нужно открыть файл в двоичном режиме, т.е. wb вместо w. Если вы этого не сделаете, символы конца строки автоматически преобразуются в специфичные для ОС.

Вот выдержка из справки Python о open().

По умолчанию используется текстовый режим, который может конвертировать символы "\n" в представление, специфичное для платформы, при записи и обратном чтении.

Ответ 2

Вы все еще можете использовать текстовый режим и принудительно использовать строку строки-строки с ключевым словом аргумент newline

f = open("./foo",'w',newline='\n')

Протестировано с помощью Python 3.4.2.

Изменить: Это не работает в Python 2.7.