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

如何在特定时间运行Python脚本,python,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 newsys

这里有一个陷阱:

我只需要收集特定时间的所有日志,该时间作为字符串参数解析为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)

正在提取日期和时间。

请尝试“列表理解”以筛选列表:

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']

看起来分离时间戳字符串没有问题,但需要将其转换为对象或类似对象,以便比较时间

下面是一个简单的示例,解析字符串以创建时间对象,然后将其与开始日志时间进行比较:

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

有关更多信息,请参阅。我懒散地分割了字符串,假设时间戳在前15个字符中,您可能需要使用隔离时间字符串所做的一些其他工作。

如果您只尝试在特定时间运行脚本,可以使用crontab。如何将crontab集成到python脚本中?你能举个例子吗?对不起,我是Python新手。另一件事是我想收集从指定时间到脚本执行时间的日志,我认为crontab在这里不会有帮助。你需要一些东西来逐行阅读日志,然后用匹配的行做一些事情。在最简单的情况下,您可以编写一个带有匹配行的新日志文件,以供以后处理。你试过这些东西吗?Python将有一个日期/时间类,可以让您将字符串转换为日期/时间类型,堆栈溢出将有答案显示如何做到这一点。“仅从特定时间”:这是指在确切的时间,还是在这个时间之后?