Поведение, которое вы видите, не зависит от Python.Это происходит из буферизированных функций обработки файлов в стандартной библиотеке C, которая лежит в основе Python и других языков высокого уровня.Если не указано иное, он преобразует символы новой строки в последовательность разрыва строки исходного текстового файла текущей платформы при записи и делает обратное при чтении.Подробности смотрите в документации по fopen()
в вашей локальной системе.В Windows это означает, что \ n будет преобразовано в \ r \ n при записи.
В документах Python упоминается преобразование новой строки и другие параметры режима open()
здесь .
Одним из решений было бы использование open("filename", "wb")
вместо open("filename", "w")
при первом открытии выходного файла.Это позволит избежать автоматического преобразования новой строки.Это должно решить проблему для вашего босса, если ваш босс использует некую форму Unix (включая OSX).К сожалению, это также будет означать, что некоторые текстовые редакторы Windows (например, блокнот?) Будут странно представлять ваш файл:
Windows acts like a teletype
when it sees new lines
without carriage returns.
Другой подход - преобразовать файлы по мере необходимости, прежде чем отправлять их кому-то, кто этого не делает.использовать Windows.Для этого существуют различные конверсионные программы, такие как dos2unix
и flip
.