【发布时间】:2011-04-23 19:08:27
【问题描述】:
对于我正在进行的练习,我尝试使用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 不会改变文件状态的想法?您使用的是什么参考资料或教程?
-
我相信关闭和重新打开文件应该可以根据以下答案进行。
-
@Shynthriir:关闭并重新打开文件并不总是一个好主意,因为它可能会对系统产生其他影响(临时文件、incron 等)。
-
我只想声明一个显而易见的事实:您DID 调用了两次 read()!
-
W/R/T/S.Lott,从 5 年开始:这确实需要在 python 文档中。显然,人们应该假设读取文件对象会改变任何东西的状态,特别是如果一个人习惯于使用不可变数据/函数式编程......