За разъяснениями и для ответа Комментарий / вопрос Агостино (У меня недостаточно репутации, чтобы комментировать, поэтому терпите меня, заявляя это как ответ ...):
В Python 2 не происходит модификации конца строки, ни в текстовом, ни в двоичном режиме - как было сказано ранее, в Python 2 применяется ответ Криса Дрэппьера (обратите внимание, что его ссылка в настоящее время указывает на 3. x Документы на Python, но текст, цитируемый Крисом, конечно, взят из Python 2, учебник по вводу и выводу )
Так что нет, не верно, что открытие файла в режиме text с Python 2 в не-Windows делает любое изменение конца строки:
0 $ cat data.txt
line1
line2
line3
0 $ file data.txt
data.txt: ASCII text, with CRLF line terminators
0 $ python2.7 -c 'f = open("data.txt"); print f.readlines()'
['line1\r\n', 'line2\r\n', 'line3\r\n']
0 $ python2.7 -c 'f = open("data.txt", "r"); print f.readlines()'
['line1\r\n', 'line2\r\n', 'line3\r\n']
0 $ python2.7 -c 'f = open("data.txt", "rb"); print f.readlines()'
Однако можно открыть файл в универсальном режиме новой строки в Python 2, который точно выполняет указанный мод конца строки:
0 $ python2.7 -c 'f = open("data.txt", "rU"); print f.readlines()'
['line1\n', 'line2\n', 'line3\n']
(универсальный спецификатор режима новой строки устарел с Python 3.x)
В Python 3, с другой стороны, специфичные для платформы концы строк нормализуются до '\ n' при чтении файла в текстовом режиме, а '\ n' преобразуется в конец строки по умолчанию текущей платформы при записи в текстовый режим (помимо байтов <-> юникод <-> байтов декодирование / кодирование происходит в текстовом режиме). Например. чтение файла с DOS / Win CRLF-строкой в Linux нормализует конец строки до '\ n'.