如何从主动从另一个程序写入的文件中读取?

时间:2020-08-08 22:41:58

标签: python io

我正在写一些东西来为我解析日志文件。

当前,我已打开文件并以这种方式连续读取

file = open(r"log.txt", "rt")
file.seek(0, os.SEEK_END)

while True:
  new = file.readline()
  // do a bunch of stuff with the contents
  await asyncio.sleep(1)
file.close()

我这样做是为了模仿Linux的tail -f。尽管我发现的是,当写入日志的服务器重新启动时,我猜是因为该文件仍被Python打开,所以无法再对其进行写操作了。

一种更好的方法是打开文件,将内容读取到EOF并存储在缓冲区中并关闭文件,然后对缓冲区中的数据进行解析,然后重新打开文件,再读更多内容。数据并重复?

我是否必须以某种方式跟踪文件中的剩余位置,以便在上次离开的位置打开它?

日志文件将增长,直到服务器重置。服务器重置后,它将获取文件的内容,将其写入新文件(存档),然后重新打开被截断(即是最新的)的先前日志文件。

我可以

  • 打开文件
  • 将内容读入缓冲区
  • 然后tell()保存最后一个位置
  • 关闭文件
  • 进行我的解析
  • 再次打开文件
  • 使用seek()tell()中的值来读取文件中的任何新数据吗?
  • 关闭文件

0 个答案:

没有答案