当前位置: 首页 > 面试题库 >

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

满言
2023-03-14
问题内容

我正在尝试使用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()两次?我需要重置文件句柄吗?或者关闭/重新打开文件以执行此操作?


问题答案:

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

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

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



 类似资料:
  • 我需要在Excel文件中做数据导出,我想很容易:) 我使用PhpSpreadsheet库(https://github.com/phpoffice/PhpSpreadsheet) 我尝试使用PhpSpreadsheet示例,并做一些简单的事情: 创建Xlsx电子表格 在Hardrive上保存 在浏览器中打开下载 你知道为什么会有这个问题吗?

  • 我知道string1将包含一个空字符串。我的问题是为什么像下面这样两次调用nextLine方法会出现错误:

  • 问题内容: 我正在阅读有关线程的文章,发现我们不能在同一线程实例上两次调用start方法。但我不知道相同的确切原因。那么为什么我们不能两次或更多次呢? 问题答案: 我认为Thread对象是实际运行上下文的“句柄”。如果允许创建与同一个java.lang.Thread关联的许多并发执行,那么您期望getStackTrace()和getState()方法返回什么? 我想Thread类本可以设计为允许产

  • 基本上,这就是我正在做的 1) 将AlarmManager设置为执行广播接收器(BCR) 2) 从BCR启动MyActivity 3)如果我的活动没有打开,请打开屏幕 出于某种原因,我注意到当MyActivity打开时,它的流程如下所示: onCreate/onNewIntent- 我不知道为什么它会马上暂停。我注意到这只发生在屏幕被标志打开时。有人知道为什么会这样吗?有什么办法可以防止这种行为吗

  • 问题内容: 我有一个想法,可能是因为我正在做一些样式设计来更改单选按钮,但是我不确定。我正在设置一个onClick事件,该事件两次调用了我的函数。我已删除它以确保它没有在其他地方被触发,并且onClick似乎是罪魁祸首。 我的功能目前仅是运输选项的简单控制台日志: 如果没有任何理由可以在这里看到为什么会发生这种情况,我可以发布其余代码,但是有很多方面,我认为这与之无关,但是我认为这是一个很好的起点