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

为什么不能在打开的文件上调用read()两次?

为什么不能在打开的文件上调用read()两次?

慕勒3428872 2019-06-01 14:09:09
为什么不能在打开的文件上调用read()两次?对于我正在做的练习,我尝试使用read()方法。奇怪的是,当我第二次调用它时,它似乎没有将文件内容作为字符串返回?这是密码f = f.open()# get the yearmatch = re.search(r'Popularity in (\d+)', f.read())if match:   print match.group(1)# get all the namesmatches = re.findall(r'<td>(\d+)</td><td>(\w+)</td><td>(\w+)</td>', f.read())if matches:   # matches is always None当然,我知道这不是最有效或最好的方法,这不是重点。关键是为什么我不能打电话read()两次?我必须重置文件句柄吗?还是关闭/重新打开文件以完成此操作?
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

呼叫read()读取整个文件,并将读取光标留在文件末尾(没有更多可读取的内容)。如果您希望一次阅读一定数量的行,则可以使用readline()readlines()或者用for line in handle:.

若要直接回答您的问题,请在读取文件后,使用read()你可以用seek(0)若要将读取游标返回到文件的开头(docs为这里)。如果您知道文件不会太大,也可以保存read()输出到变量,并在findall表达式中使用它。

PS。不要忘记在你完成文件后关闭它;)


查看完整回答
反对 回复 2019-06-01
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

是的,如上.

我只写一个例子:

>>> a = open('file.txt')>>> a.read()#output>>> a.seek(0)>>> a.read()#same output


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

添加回答

举报

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