gpt4 book ai didi

Python 寻求读取不断增长的文件

转载 作者:行者123 更新时间:2023-12-01 04:55:00 24 4
gpt4 key购买 nike

我编写了一个 python 脚本,使用任务计划程序每 5 分钟运行一次,读取不断增长的日志文件(文本文件)并将数据插入数据库。每天都会生成新的日志文件。

我需要修改它并在最后一行的末尾放置一个指针,这样当调度程序再次运行时,它会在最后插入的行之后开始。新的一天开始后,指针返回到新文件的第一行。 Seek 函数可以做到这一点,但还不知道如何做到。这是我的尝试:

import time, os
day=time.strftime("%Y%m%d")
month=time.strftime("%m")
filename=time.strftime("%Y%m%d")

# Check for a new day
currTime = datetime.datetime.now()
lastDay = 0


#Open file in a relative location
logs_dir = os.path.dirname(r'C:\Python27\Logs\\')
rel_path = os.path.join('\\', month, filename + '.log')
abs_file_path = os.path.join(logs_dir, month, filename) + '.log'
file = open(abs_file_path, 'r')


if currTime.day != lastDay:
lastDay = currTime.day
file.seek(first_byte_to_read) #<<-- to reset the pointer ??
else:
file.seek(last_read_byte)

最佳答案

您无需重复运行该程序并记住上次停止的位置,只需运行该程序一次并让它监视文件中的新内容即可。有两种主要方法可以做到这一点:

  1. 投票。读取直到文件结尾,然后等待几秒钟并重试。简单、可靠,但对于功率受限的设备来说不是一个好主意。
  2. 异步。在 Linux 上,您可以使用 PyInotify当文件中有新内容时被唤醒。不过,您似乎使用的是 Windows,请参阅此处:How do I watch a file for changes?有点复杂,但通常是更好的解决方案。

关于Python 寻求读取不断增长的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27631569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com