首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从特定时间运行Python脚本

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

Stack Overflow用户
提问于 2018-08-14 07:46:00
回答 2查看 192关注 0票数 2

这里有一个陷阱:

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

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

代码语言:javascript
复制
Aug 6 12:30:45.123 abcdefghijklmnopqrstuvwxyz

诸若此类

从这个时候开始,捕获日志变得非常困难,直到脚本执行。

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

这就是我到目前为止所尝试的:

代码语言:javascript
复制
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)

提取日期和时间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-15 06:59:33

看起来您在分隔时间戳字符串方面没有问题,但是您需要将其转换为time对象或类似对象,以便可以比较时间。

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

代码语言:javascript
复制
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)

这会产生以下结果:

代码语言:javascript
复制
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个字符中,您可能需要使用在分离时间字符串时所做的一些其他工作。

票数 0
EN

Stack Overflow用户

发布于 2018-08-14 17:17:29

尝试列表理解来过滤列表:

代码语言:javascript
复制
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)]

输出:

代码语言:javascript
复制
['Aug  7 11:00:00 abc newsyslog[25714]: logfile turned over due to size>1024K', 'Aug  7 11:00:00.000  abc xyz lol']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51831939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档