Python:什么时候应该使用file.read()或file.readlines()?

我注意到,如果我遍历一个我打开的文件,那么不用“读取”就可以快速遍历它。

l = open('file','r')
for line in l:
    pass (or code)

比...快得多

l = open('file','r')
for line in l.read() / l.readlines():
    pass (or code)

第二个循环将花费大约1.5倍的时间(我在同一个文件中使用timeit,结果为0.442比0.660),并且会得到相同的结果。

所以 - 什么时候应该使用.read()或.readlines()?

由于我总是需要迭代我正在阅读的文件,并且在了解困难的方式之后,可以在很大的数据上减慢.read()的速度 - 我似乎无法想象再次使用它。


您的问题的简短答案是,这三种读取文件位的方法都有不同的用例。 如上所述,f.read()将文件作为单独的字符串读取,因此允许相对简单的文件范围操作,例如文件范围的正则表达式搜索或替换。

f.readline()读取文件的一行,允许用户解析一行而不必读取整个文件。 使用f.readline()还可以使读取文件的逻辑更容易应用,而不是完整的逐行迭代,例如文件在中途更改格式。

使用for line in f:语法允许用户按照问题中所述逐行遍历文件。

(正如在其他答案中指出的那样,这个文档是非常好的阅读):

https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects

编辑:它以前声称可以使用readline()在for循环迭代期间跳过一行。 但是,这在python 2.7中不起作用,这也许是一个值得怀疑的做法,所以这个声明已被删除。

编辑:添加了一个f.readline()和f.read()的用例的例子


希望这可以帮助!

https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects

当大小被忽略或消极时,文件的全部内容将被读取并返回; 如果文件是机器内存的两倍,那就是你的问题

抱歉所有的编辑!

为了读取文件中的行,您可以遍历文件对象。 这是记忆效率高,速度快,并导致简单的代码:

for line in f:
    print line,

This is the first line of the file.
Second line of the file

Eesssketit

这是一个很好的答案。 /需要知道的一点是,无论您使用readline()函数,它都会读取一行......然后它将无法再读取它。 您可以使用seek()函数返回到该位置。 要返回到零位,只需输入f.seek(0)

同样,函数f.tell()会让你知道你在哪个位置。

链接地址: http://www.djcxy.com/p/92329.html

上一篇: Python: When should I ever use file.read() or file.readlines()?

下一篇: Git submodule push when it is a GitHub library?