Как я могу заставить 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
всегда, а не проверять операционную систему.
Ответы
Ответ 1
Вам нужно открыть файл в двоичном режиме, т.е. wb
вместо w
. Если вы этого не сделаете, символы конца строки автоматически преобразуются в специфичные для ОС.
Вот выдержка из справки Python о open()
.
По умолчанию используется текстовый режим, который может конвертировать символы "\n" в представление, специфичное для платформы, при записи и обратном чтении.
Ответ 2
Вы все еще можете использовать текстовый режим и принудительно использовать строку строки-строки с ключевым словом аргумент newline
f = open("./foo",'w',newline='\n')
Протестировано с помощью Python 3.4.2.
Изменить: Это не работает в Python 2.7.