如何从特定时间运行Python脚本

这里有一个收获:


我只需要收集特定时间的所有日志,就可以将其作为python文件的字符串参数解析为 'python main.py -t "Aug 6 12:30:45.123"


日志实际上具有时间戳和相应的日志。例如:


Aug 6 12:30:45.123 abcdefghijklmnopqrstuvwxyz

等等


从此时开始直到脚本执行为止,捕获日志变得非常困难。


请注意:只能使用标准Python库。


到目前为止,这是我尝试过的:


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"]  # we'll use a list as an example


for line in log_lines:

    date_string = " ".join(line.split(None, 3)[:-1])

    print(date_string)

提取日期和时间。


小怪兽爱吃肉
浏览 153回答 2
2回答

吃鸡游戏

看起来您可以轻松地分隔时间戳字符串,但是您需要将其转换为时间对象或类似对象,以便可以比较时间。这是一个简单的示例,该示例分析字符串以创建时间对象,然后将其与开始日志时间进行比较:import time#example loglog_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>1024KAug  8 11:00:00.000  abc xyz lolDec  4 11:00:00.000  ghi 1.62有关更多信息,请参见time.strptime()。假设时间戳记在前15个字符中,我已经对字符串进行了惰性分割,您可能需要使用在隔离时间字符串中所做的其他工作。

人到中年有点甜

尝试使用列表理解来过滤列表: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']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python