xreadlines和for循环文件之间的区别

12

在Python 2.7中拥有一个文件对象:

f = open('my_file', 'r')

使用for循环文件(最常见的方式)和使用xreadlines()函数的区别是什么:

for line in f:
    # Do something with line

并且

for line in f.xreadlines():
    # Do something with line

我的意思是,这两个选项都定义了一个生成器,与readlines()read()函数加载所有文件内容到内存的方式相反。

它们中有哪个在性能或文件处理方面有所改进?还是它们只是实现同样功能的等效方式?


3
xreadlines 先出现。一般情况下,Python 从基于列表的函数开始(如 rangeitemszip),引入迭代器对应函数(xrangeiteritemsizip),然后将原始函数改为返回迭代器。这是其中一个变更的末尾阶段。 - Katriel
请注意,for _ in something 会在幕后调用 iter(something) - Katriel
1个回答

21

来自 docs.python.org

file.xreadlines()
This method returns the same thing as iter(f).

New in version 2.1.

Deprecated since version 2.3: Use for line in file instead.

...并且在处理文件时最好使用with关键字;再次参见文档页面。

with open('my_file', 'r') as f:
    for line in f:
        # do stuff

1
这意味着它们完全且精确地相同! - juliomalegria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接