遍历带回车的文件
有没有办法用这种语法来逐行读取一个文本文件,
with open(filename,'r') as f:
for line in f:
print f
如果这个文件里只有回车符,而没有换行符呢?
到目前为止,我只能这样做:
with open(filename,'r') as f:
for line in f.read().split('\r'):
print f
但是这些文件有时候非常大。我不想用dos2unix去修改文件,因为另一个软件需要它保持原来的格式。
2 个回答
1
你可以使用 open(filename, 'rU')
这个命令。
17
你可以使用Python的通用换行符支持来使用open()
除了标准的fopen()模式外,mode还可以是
'U'
或'rU'
。Python通常是支持通用换行符的;使用'U'
打开文件时,它会把文件当作文本文件来处理,但文件中的行可以用以下任意一种方式结束:Unix的换行符'\n'
、Mac的换行符'\r'
,或者Windows的换行符'\r\n'
。在Python看来,这些不同的换行符都被视为'\n'
。如果Python没有支持通用换行符,那么带有'U'
的模式和普通文本模式是一样的。需要注意的是,这种方式打开的文件对象还有一个叫做newlines的属性,它的值可能是None
(如果还没有遇到换行符的话)、'\n'
、'\r'
、'\r\n'
,或者是一个包含所有遇到的换行符类型的元组。