使用Python迭代文件

使用Python迭代文件

我有一个问题要理解迭代一个文件,这里我继续我在解释器上键入的内容和结果:

>>> f = open('baby1990.html', 'rU')>>> for line in f.readlines():>>>  print(line)>>> ...>>> ... all the lines from the file appear here>>> ...

当我再次尝试在同一个打开的文件上迭代时,我什么也没有!

>>> f = open('baby1990.html', 'rU')>>> for line in f.readlines():>>>    print(line)>>>>>>

根本没有输出,要解决这个问题,我必须关闭()文件,然后再打开它进行读取!这是正常的行为吗?


拉风的咖菲猫
浏览 422回答 3
3回答

慕田峪7331174

是的,这是正常的行为。您基本上是在第一次读取文件的末尾(您可以将它描述为读取磁带),因此,除非您通过以下任何一种方法重新设置它,否则无法从它读取更多内容。f.seek(0)重新定位到文件的开始,或者关闭它,然后再打开它,这将从文件的开头开始。如果您愿意,可以使用with语法,这将自动为您关闭文件。例如,with open('baby1990.html', 'rU') as f:   for line in f:      print line一旦这个块执行完毕,文件就会自动为您关闭,因此您可以重复执行这个块,而无需显式地自己关闭该文件,然后以这种方式再次读取该文件。

忽然笑

文件对象是缓冲器..当您从缓冲区读取时,您读取的部分将被消耗(读取位置向前移动)。当您读取整个文件时,读取位置位于EOF,因此它不返回任何内容,因为没有任何要读取的内容。如果由于某种原因必须重置文件对象上的读取位置,则可以:f.seek(0)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python