一次在Python中读取一行文件

时间:2013-08-16 23:33:10

标签: python file-io

我很感激这个问题已经被问到了数百万的时间,但是在尝试逐行读取.txt文件时我无法弄清楚我一次性读取整个文件。

这是我的小片段

    num = 0

with open(inStream, "r") as f:
    for line in f:
        num += 1
        print line + " ..."
        print num

看一下open函数,有什么东西可以建议第二个参数来限制读数,因为这只是用来写文件的“模式”。

所以我只能猜测我的文件存在同样的问题,但这是一个txt文件,逐行输入。

任何提示?

1 个答案:

答案 0 :(得分:2)

如果没有更多信息,很难绝对肯定......但最有可能的是,你的问题是不合适的行结束。


例如,在现代Mac OS X系统上,文本文件中的行以'\n'换行符结尾。因此,当您执行for line in f:时,Python会破坏'\n'字符上的文本文件。

但在经典Mac OS 9上,文本文件中的行以'\r'结尾。如果你有一些古老的经典Mac文本文件,你给Python一个,它将寻找'\n'字符,而不是找到任何,所以它会认为整个文件是一个巨大的线。

(当然在现实生活中,Windows比经典的Mac OS更常见,但是我使用这个例子是因为它更简单。)


Python 2 :幸运的是,Python有一个名为"universal newlines"的功能。有关完整的详细信息,请参阅链接,但简短的版本是在打开文本文件时将"U"添加到模式的末尾意味着Python将读取三个标准的行结束约定中的任何一个(并将它们提供给您代码为Unix风格的'\n')。

换句话说,只需更改一行:

with open(inStream, "rU") as f:

Python 3 :通用换行符是标准行为的一部分;添加"U"无效并且已弃用。