我对文件进行迭代有问题。这是我在解释器上键入的内容和结果:
>>> f = open('baby1990.html', 'rU') >>> for line in f.readlines(): ... print(line) ... # ... all the lines from the file appear here ...
当我尝试再次遍历同一个打开的文件时,我什么也没得到!
>>> for line in f.readlines(): ... print(line) ... >>>
根本没有输出。为了解决这个问题,我必须对close()文件进行编辑,然后再次将其打开以进行读取!那是正常行为吗?
close()
是的,这是正常行为。基本上,你是第一次读取文件的末尾(可以像读取磁带一样对它进行图片处理),因此除非你使用f.seek(0)重定位到文件开头的位置进行重置,否则你将无法从文件中读取更多内容。文件,或者将其关闭,然后再次打开,它将从文件的开头开始。
f.seek(0)
如果你愿意,可以改用with语法,它将自动为你关闭文件。
with
例如,
with open('baby1990.html', 'rU') as f: for line in f: print line
一旦完成该块的执行,文件将自动为你关闭,因此你可以重复执行此块,而无需自己显式关闭文件并以此方式再次读取文件。