所以我的问题感觉有点复杂,也许只是我.. 用外行的话来说,这就是我想要完成的事情.. 我需要获取与您所处的状态相关的最新行,抓住时间戳并将其与当前时间进行比较。
对于我们正在工作的程序,它会保存到日志文件中。有时该文件可能会达到 50MB。目前我正在使用以下代码来获取最新行:
with open(file_location) as file_object:
for each_line in file_object:
if "You're currently in: " in each_line:
recent_statement = eachLine
在该片段运行结束时,可以保证获取您所在的最新“状态”行。
以下是整行的样子:
Feb 9 12:34:20 You're currently in: Busy
现在,如何保存日志文件的问题是,可能存在相同“状态”的重复项,但时间戳不同,这基本上可以重置我的计时器。
因此,如果当前时间是 12:56:00,这就是日志文件的外观:
Feb 9 12:33:00 You're currently in: Away
Feb 9 12:35:00 You're currently in: Away
我需要它让计时器说它已经是 23 分钟,而不是 21 分钟。最重要的是,如果状态发生变化,我需要计时器重置到那个新时间。
例子:
Feb 9 12:48:00 You're currently in: Available
Feb 9 12:49:13 You're currently in: Offline
我需要它回来并拥有现在的当前状态,Offline
计时器说他们已经处于该状态 4 分钟。
我目前完成的功能看起来像这样......
def check_elapsed(recent_aux_line,aux): global dry_run,static_timestamp_recentstatement timestamp_recentstatement = timestamp_of_line current_time = datetime.now()
if dry_run == True:
elapsed_time = current_time - timestamp_recentstatement
static_timestamp_recentstatement = timestamp_recentstatement
dry_run = False
elif dry_run == False:
elapsed_time = current_time - static_timestamp_recentstatement
print sys_time(),"Person has been in",status,"for",elapsed_time
if elapsed_time > timedelta(minutes=4):
print "Over 4 minutes!"
必须有一种更简单的方法来编写我想要完成的内容。