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

发布于 2021-02-02 23:23:46

我正在尝试使用read()方法两次读取给定文件的内容。奇怪的是,当我第二次调用它时,似乎没有将文件内容作为字符串返回?

这是代码

f = f.open()

# get the year
match = re.search(r'Popularity in (\d+)', f.read())

if match:
  print match.group(1)

# get all the names
matches = re.findall(r'<td>(\d+)</td><td>(\w+)</td><td>(\w+)</td>', f.read())

if matches:
  # matches is always None

当然我知道这不是最有效或最好的方法,这不是重点。关键是,为什么我不能调用read()两次?我需要重置文件句柄吗?或者关闭/重新打开文件以执行此操作?

关注者
0
被浏览
263
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    调用read()将读取整个文件,并将读取的游标留在文件的末尾(仅读取其他内容)。如果你希望一次阅读一定数量的行,则可以使用readline(),也可以使用 readlines()遍历行for line in handle:。

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

    附言 完成操作后,不要忘记关闭文件.



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看