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


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

f = open('out.txt','w')
f.write('line1n')
f.write('line2')
f.close()

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

в linux это n и для победы rn

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

2 57

2 ответа:

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

вот отрывок из ссылки Python о open().

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

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

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

протестировано с Python 3.4.2.

Edit: это не работает в Python 2.7.