21

我有一个脚本,它读取一个文件,然后基于该文件完成测试,但是我遇到了一个问题,因为文件在一小时后重新加载,我无法让脚本在之后或那个时间点重新读取文件。

所以:

  • 获取要阅读的新文件
  • 读取文件
  • 对文件执行测试
  • 获取新文件以读取(具有相同名称 - 但如果它是解决方案的一部分,则可以更改)
  • 读取新文件
  • 对新文件执行相同的测试

谁能建议一种让 Python 重新读取文件的方法?

4

2 回答 2

38

要么seek到文件的开头

with open(...) as fin:
    fin.read()   # read first time
    fin.seek(0)  # offset of 0
    fin.read()   # read again

或再次打开文件(我更喜欢这种方式,因为否则您将文件打开一个小时,在两次传递之间什么都不做)

with open(...) as fin:
    fin.read()   # read first time

with open(...) as fin:
    fin.read()   # read again

把这个放在一起

while True:
    with open(...) as fin:
        for line in fin:
            # do something 
    time.sleep(3600)
于 2013-06-10T10:38:13.590 回答
19

您可以通过以下方式将光标移动到文件的开头:

file.seek(0)

然后就可以成功阅读了。

于 2013-06-10T10:36:34.693 回答