为了账号安全,请及时绑定邮箱和手机立即绑定

使用Python迭代文件

使用Python迭代文件

拉风的咖菲猫 2019-07-20 14:22:13
使用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)>>>>>>根本没有输出,要解决这个问题,我必须关闭()文件,然后再打开它进行读取!这是正常的行为吗?
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

是的,这是正常的行为。您基本上是在第一次读取文件的末尾(您可以将它描述为读取磁带),因此,除非您通过以下任何一种方法重新设置它,否则无法从它读取更多内容。f.seek(0)重新定位到文件的开始,或者关闭它,然后再打开它,这将从文件的开头开始。

如果您愿意,可以使用with语法,这将自动为您关闭文件。

例如,

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

一旦这个块执行完毕,文件就会自动为您关闭,因此您可以重复执行这个块,而无需显式地自己关闭该文件,然后以这种方式再次读取该文件。


查看完整回答
反对 回复 2019-07-20
?
忽然笑

TA贡献1806条经验 获得超5个赞

文件对象是缓冲器..当您从缓冲区读取时,您读取的部分将被消耗(读取位置向前移动)。当您读取整个文件时,读取位置位于EOF,因此它不返回任何内容,因为没有任何要读取的内容。

如果由于某种原因必须重置文件对象上的读取位置,则可以:

f.seek(0)


查看完整回答
反对 回复 2019-07-20
  • 3 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信