使用' for'读取大文件环

时间:2018-04-03 10:26:48

标签: python python-3.x

我有一个巨大的文件,abc.txt,想要逐行阅读,而不是一次全部阅读。我可以这样做:

filename="c:\abc.txt"
with open (filename, "r") as fb:
    for content in fb:
        # Do something ....

这里我不理解一件事。如你所见," fb"是这里的文件指针。 " for"是什么?即使不使用任何readline或read函数,也可以在内部直接处理指针?

我只是想知道for循环在这里是如何工作的。

1 个答案:

答案 0 :(得分:2)

没有“指针”这样的东西。在Python中。

fb文件对象。 Python中的文件对象是容器类型和生成器。它们实现了迭代器协议,当循环时(例如使用for循环),它会从您打开的文件中生成单独的行。

如果您想尝试查看幕后发生的事情,请在REPL中尝试:

f = open("sometextfileyouhave.txt", "r")
file_iter = iter(f)
print(next(file_iter))
print(next(file_iter))
print(next(file_iter))
print(next(file_iter))
# ...

甚至更短:

f = open("sometextfileyouhave.txt", "r")
print(next(f))
print(next(f))
print(next(f))
# ...