Python中如何使用for循环遍历文件?

3
我有这段代码。
f = open('textfile.txt', 'r')
for line in f:
    print line

假设textfile.txt的内容如下:
1
2
3
4
5

这是如何工作的?它是如何知道自己在文件中的位置的?我理解它一遍又一遍地打印,但为什么它不只是一遍又一遍地打印整个文件呢?我不明白f是一个范围。我也假设它知道在EOF处停止。


1
文件是迭代器。 @ 关闭投票者:这些关闭原因非常薄弱/错误。 - Matt Ball
1
你可能会觉得这很有启发性:http://effbot.org/zone/python-for-statement.htm。 - Matt Ball
1个回答

5
调用open()会返回一个文件对象,即f是一个文件对象。文件对象是自己的迭代器,实现了next()方法,使它们可以像您的示例一样在for循环中使用。是的,迭代器实现知道在EOF处停止。请查看此处的说明,在file.next()方法详细信息下: http://docs.python.org/2/library/stdtypes.html#bltin-file-objects

C语言和其他编程语言是否以相同的方式执行此操作?当使用fgets()或类似函数运行循环时,它们是否有隐藏的函数被调用?还是只有一些语言会这样做?这似乎很奇怪,因为没有指定的东西正在发生。 - 0x41414141
不同的编程语言将有不同的实现,但这里实际上只有两个基本原则——将文件视为行的集合;和循环/迭代。循环在大多数语言中通常是一个原始操作,而迭代是一种状态机构造,简化了对集合进行循环。将文件视为行的集合是一个很好的概念结构,然后与迭代相结合,使您能够通过文件进行“for”循环。 - Chamila Chulatunga

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