我有一个巨大的文件,abc.txt,想要逐行阅读,而不是一次全部阅读。我可以这样做:
filename="c:\abc.txt"
with open (filename, "r") as fb:
for content in fb:
# Do something ....
这里我不理解一件事。如你所见," fb"是这里的文件指针。 " for"是什么?即使不使用任何readline或read函数,也可以在内部直接处理指针?
我只是想知道for
循环在这里是如何工作的。
答案 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))
# ...