Python, читать текстовый файл CRLF как есть, с CRLF

with open(fn, 'rt') as f: lines = f.readlines() 

Это считывает текстовый файл CR LF (WinXP, Py 2.6) с концами линии LF. Таким образом, lines содержат концы «\ n». Как получить строки как есть:

  • для файла CRLF получить строки с концами '\ n \ r'
  • для LF-файла получаем строки с концами '\ n'

  • Открытый модуль Python os открывает выше существующий каталог с относительным путем
  • Проверка существования файла на удаленном SSH-сервере с использованием Python
  • Python: отмените операцию чтения файла Python (), так что указатель файла возвращается в исходное состояние
  • IOError: недопустимый режим ('r') или имя файла: 'c: \\ Python27 \ test.txt'
  • Python для извлечения данных из файла
  • Python - Как проверить, используется ли файл другим приложением?
  • Функция read () Python возвращает пустую строку
  • Как писать в файл с помощью неблокирующего ввода-вывода?
  • ValueError: операция ввода-вывода в закрытом файле
  • Анализ файлов журнала Apache
  • Правильный способ записи строки в файл на Python
  • Как я могу предотвратить csv.DictWriter () или writow () округление моих поплавков?
  • One Solution collect form web for “Python, читать текстовый файл CRLF как есть, с CRLF”

    Вместо встроенной функции open() используйте io.open() . Это дает вам больше контроля над обработкой новых строк аргументом newline :

     import io with io.open(fn, 'rt', newline='') as f: lines = f.readlines() 

    Установка newline в пустую строку newline к включению универсальной поддержки новой строки, но возвращает нетранслируемые контуры строк; вы все равно можете использовать .readlines() чтобы найти строки, завершенные с помощью любого из терминаторов юридической линии, но возвращенные данные точно найдены в файле:

    При вводе, если в строке новой строки None , включен универсальный режим новых линий. Строки на входе могут заканчиваться на '\n' , '\r' или '\r\n' , и они переводятся в '\n' перед возвратом вызывающему. Если он равен '' , универсальный режим новых линий активирован, но конечные строки возвращаются вызывающему, непереведенному .

    Акцент мой.

    Это отличается от открытия файла в двоичном режиме, где .readlines() будет разделять только файл на \n символов. Для файла с окончанием строки или окончанием смешанной строки это означает, что строки не будут правильно разделены.

    Демо-версия:

     >>> import io >>> open('test.txt', 'wb').write('One\nTwo\rThree\r\n') >>> open('test.txt', 'rb').readlines() ['One\n', 'Two\rThree\r\n'] >>> io.open('test.txt', 'r', newline='').readlines() [u'One\n', u'Two\r', u'Three\r\n'] 

    Обратите внимание, что io.open() также декодирует содержимое файла в значения unicode.

    Python - лучший язык программирования в мире.