2 回答
TA贡献1829条经验 获得超7个赞
看起来您可以轻松地分隔时间戳字符串,但是您需要将其转换为时间对象或类似对象,以便可以比较时间。
这是一个简单的示例,该示例分析字符串以创建时间对象,然后将其与开始日志时间进行比较:
import time
#example log
log_lines = ["Aug 7 11:00:00 abc newsyslog[25714]: logfile turned over due to size>1024K",
"Aug 8 11:00:00.000 abc xyz lol",
"Aug 3 11:00:00.000 def 3.14",
"Dec 4 11:00:00.000 ghi 1.62",
]
# process args (TODO use argparse)
start_time_arg = "Aug 6 12:30:45.123"
log_start = time.strptime(start_time_arg[:15], "%b %d %H:%M:%S")
for log in log_lines:
log_time = time.strptime(log[:15], "%b %d %H:%M:%S")
if log_time > log_start:
print(log)
这将产生:
Aug 7 11:00:00 abc newsyslog[25714]: logfile turned over due to size>1024K
Aug 8 11:00:00.000 abc xyz lol
Dec 4 11:00:00.000 ghi 1.62
有关更多信息,请参见time.strptime()。假设时间戳记在前15个字符中,我已经对字符串进行了惰性分割,您可能需要使用在隔离时间字符串中所做的其他工作。
TA贡献1895条经验 获得超7个赞
尝试使用列表理解来过滤列表:
log_lines = ["Aug 7 11:00:00 abc newsyslog[25714]: logfile turned over due to size>1024K",
"Aug 7 11:00:00.000 abc xyz lol"]
arg = "Aug 7 11:00:00"
[line for line in log_lines if line.startswith(arg)]
输出:
['Aug 7 11:00:00 abc newsyslog[25714]: logfile turned over due to size>1024K', 'Aug 7 11:00:00.000 abc xyz lol']
添加回答
举报