我有这段代码
f = open('textfile.txt', 'r')
for line in f:
print line
让我们说 textfile.txt 是这样的
1
2
3
4
5
这是如何运作的?它如何知道它在文件中的位置?我知道它正在一遍又一遍地打印,但为什么不一遍又一遍地打印整个文件。我不明白 f 是一个范围。我还假设它知道在 EOF 处停止?
我有这段代码
f = open('textfile.txt', 'r')
for line in f:
print line
让我们说 textfile.txt 是这样的
1
2
3
4
5
这是如何运作的?它如何知道它在文件中的位置?我知道它正在一遍又一遍地打印,但为什么不一遍又一遍地打印整个文件。我不明白 f 是一个范围。我还假设它知道在 EOF 处停止?
调用open()
返回一个文件对象——即f
是一个文件对象。文件对象是它们自己的迭代器,实现该next()
方法,允许for
根据您的示例在循环中使用它们。是的,迭代器实现知道在 EOF 处停止。看看这里的描述,在file.next()
方法细节下:
http: //docs.python.org/2/library/stdtypes.html#bltin-file-objects