Python: укажите формат конца строки для чтения файлов - PullRequest
2 голосов
/ 04 декабря 2010

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

Ответы [ 4 ]

3 голосов
/ 04 декабря 2010

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

with open('input.txt', 'rU') as fp:
  for line in fp:
    print line
2 голосов
/ 04 декабря 2010

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

>>> 'foo\nbar'.splitlines()
['foo', 'bar']
>>> 'foo\rbar'.splitlines()
['foo', 'bar']
>>> 'foo\r\nbar'.splitlines()
['foo', 'bar']
1 голос
/ 04 декабря 2010

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

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

См. Документацию по Файловым объектам Python .

1 голос
/ 04 декабря 2010

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

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

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

...