一尘不染

Python-第二次遍历文件不起作用

python

我对文件进行迭代有问题。这是我在解释器上键入的内容和结果:

>>> 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()文件进行编辑,然后再次将其打开以进行读取!那是正常行为吗?


阅读 511

收藏
2020-02-21

共1个答案

一尘不染

是的,这是正常行为。基本上,你是第一次读取文件的末尾(可以像读取磁带一样对它进行图片处理),因此除非你使用f.seek(0)重定位到文件开头的位置进行重置,否则你将无法从文件中读取更多内容。文件,或者将其关闭,然后再次打开,它将从文件的开头开始。

如果你愿意,可以改用with语法,它将自动为你关闭文件。

例如,

with open('baby1990.html', 'rU') as f:
  for line in f:
     print line

一旦完成该块的执行,文件将自动为你关闭,因此你可以重复执行此块,而无需自己显式关闭文件并以此方式再次读取文件。

2020-02-21