遍历带回车的文件

13 投票
2 回答
10730 浏览
提问于 2025-04-16 12:51

有没有办法用这种语法来逐行读取一个文本文件,

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',或者是一个包含所有遇到的换行符类型的元组。

撰写回答