Python继续使用过滤器读取日志文件,并将过滤器数据写入新文件

2024-04-27 17:44:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个脚本来继续读取带有特定筛选器的日志文件(类似于linux中的tail-f),当筛选器与日志文件日志匹配时,它应该将匹配的筛选器写入新文件,然后从停止的位置重新启动,而不是再次读取日志文件

示例日志文件:

2020-04-10 20:37:05,331 - INFO - 
2020-04-10 20:37:05,341 - INFO - 
2020-04-10 20:37:05,349 - INFO - 
2020-04-10 20:37:05,358 - WARNING - data missing: 
2020-04-10 20:37:05,359 - INFO - 
2020-04-10 20:37:05,366 - WARNING - data missing: 
2020-04-10 20:37:05,366 - WARNING - data missing: 
2020-04-10 20:37:05,367 - INFO - 
2020-04-10 20:37:05,375 - INFO - 

筛选器字符串:WARNING - data missing:

我正在编写的代码

import os

mylines = []
with open ('file.log', 'rt') as myfile:
    for myline in myfile:
        mylines.append(myline.rstrip('\n'))

index = 0
prev = 0
str = mylines[0]
substr = "WARNING - data missing:"
while index < len(str):
    index = str.find(substr, index)
    if index == -1:
        break
    print(" " * (index - prev) + "WARNING - data missing:", end='')
    prev = index + len(substr)
    index += len(substr)
print('\n' + str);

if not os.path.exists('/tmp/.fileinfo'):
    seek_from = 0
else: 
    of = open('/tmp/.fileinfo', 'r')
    seek_from = int(of.readline().strip())

是否有人可以建议一种将过滤器写入另一个文件的方法,以及是否有任何其他方法可以获得我想要的


Tags: 文件infodataindexlenosopenmyfile
1条回答
网友
1楼 · 发布于 2024-04-27 17:44:52

使用以下命令:

with open("file.log", "r") as inlog, open("filtered.log", "w") as outlog:
    for log in inlog:
        log = log.strip()
        if "WARNING - data missing:" in log:
            outlog.write(log + "\n")

相关问题 更多 >