Почему вы не должны использовать os.linesep при редактировании в текстовом режиме?

Документация Python 2.7Документация Python 3 как ) содержат следующую строку о функции os.linepath:

Не используйте os.linesep в качестве ограничителя строк при открытии файлов в текстовом режиме (по умолчанию);

Почему? И как это отличается от использования его в двоичном режиме?

Ответы

Ответ 1

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

Итак, например, если вы были в Windows, где os.linesep есть '\r\n', когда вы пишете это в файл, \n автоматически преобразуется в \r\n, и вы получите \r\r\n к вашему файлу.

Например:

>>> import os
>>> os.linesep
'\r\n'
>>> with open('test.txt', 'w') as f:
...     f.write(os.linesep)
...
>>> with open('test.txt', 'rb') as f:
...     print repr(f.read())
...
'\r\r\n'