2

我正在编写一个处理文本文件的 Python 脚本。我希望处理由不同人生成的文件,在不同的操作系统下工作。有没有一种很好的方法来确定哪个操作系统创建了文本文件,并指定行尾约定以使逐行解析变得微不足道?

4

4 回答 4

3

打开文件时使用通用换行模式。

with open('input.txt', 'rU') as fp:
  for line in fp:
    print line
于 2010-12-04T02:55:20.083 回答
2

splitlines()处理各种线路终止符:

>>> 'foo\nbar'.splitlines()
['foo', 'bar']
>>> 'foo\rbar'.splitlines()
['foo', 'bar']
>>> 'foo\r\nbar'.splitlines()
['foo', 'bar']
于 2010-12-04T01:52:37.813 回答
1

如果您不关心结束空白,那么:

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

'\n' 将负责 Linux / Mac 和 rstrip 将吃掉任何来自 Windows 的 '\r'。

于 2010-12-04T02:03:05.750 回答
1

您想使用file.readlines(),它返回一个包含文件中行的列表。

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

请参阅有关Python 文件对象的文档。

于 2010-12-04T02:15:25.827 回答