我有一个小程序,我试图通过它读取在文件位置生成的日志文件,如下面的
Error_Suspects = ['Error', 'ERROR', 'Failed', 'Failure']
def detect_suspects(file_path, word_list):
with open(file_path) as LogFile:
Summary = {word: [] for word in word_list}
failure = ':'
for num, line in enumerate(LogFile, start=1):
for word in word_list:
if word in line:
failure += '<li>' + line + '</li>'
return failure
Result = detect_suspects(r'C:\scripts\Log.txt', Error_Suspects)
现在问题是这个问题很好,直到我只有一个文件。但现在文件是以一定的间隔生成的,时间戳如下所示。
我希望以这种方式修改上述程序,以便始终使用最新的时间戳检查文件。此外,我想循环此程序每5分钟运行一次以检查最新文件。如果新文件在5分钟内没有到达,则不应该读取旧文件(已经读过)
答案 0 :(得分:1)
如果你在包含所有这些文件的目录中,可以使用os.path.getmtime
获取最新文件。
您可以这样使用它:
import os
files = os.listdir('.')
latest_file = max(files, key=os.path.getmtime)
os.listdir
返回当前目录中所有文件的列表。带密钥的max
查找具有最新修改时间的文件,并将其返回。
要每5分钟遍历一次目录,您需要设置一个while
循环:
import time
while True:
Result = detect_suspects(r'C:\scripts\Log.txt', Error_Suspects)
time.sleep(5 * 60) # 300 seconds or 5 minutes