Python: укажите формат конца строки для чтения файлов

Я пишу скрипт Python, который обрабатывает текстовый файл. Я ожидаю обработки файлов, созданных разными людьми, работающих под разными операционными системами. Есть ли хороший способ выяснить, какая ОС создала текстовый файл, и указать соглашение о конце строки, чтобы сделать анализ построчно тривиальным?

4 ответа

Решение

Используйте универсальный режим новой строки при открытии файла.

with open('input.txt', 'rU') as fp:
  for line in fp:
    print line

splitlines() обрабатывает различные разделители строк:

>>> 'foo\nbar'.splitlines()
['foo', 'bar']
>>> 'foo\rbar'.splitlines()
['foo', 'bar']
>>> 'foo\r\nbar'.splitlines()
['foo', 'bar']

Вы хотите использовать file.readlines(), который возвращает список, содержащий строки в файле.

lines = open('info.txt').readlines()
for line in lines:
    print line

Смотрите документацию по объектам файлов Python.

Если вас не волнует окончание пробела, тогда:

for line in [l.rstrip() for l in open('test.py').read().split('\n')]:
    print line

'\ n' позаботится о Linux / Mac, а rstrip сожрет любую '\r' из Windows.

Другие вопросы по тегам