我有一个包含以下结构的日志文件:
2014-04-28 16:09:51:579491 Computer 0 4
2014-04-28 16:09:55:636024 Computer 0 6
2014-04-28 16:09:57:133587 Computer 0 8
2014-04-28 16:09:58:545286 Computer 0 10
2014-04-28 16:09:59:835178 Computer 0 12
2014-04-28 16:10:01:015113 Computer 0 14
2014-04-28 16:10:03:132038 Computer 0 16
2014-04-28 16:10:04:373344 Computer 0 18
2014-04-28 16:10:05:474140 Computer 0 20
2014-04-28 16:10:06:334320 Computer 0 22
我试图找到所花费的时间,这可以通过计算第一行和最后一行的时间值之间的差异来实现。如何提取值才能继续?此外,我想要在行的最右侧的数值并将其存储到列表中。
现在,我要阅读第一行和最后一行。
newf1=open("userdata.txt","r+")
a=newf1.readlines()
fline=a[0]
lline=a[-1]
print fline,lline
感谢任何帮助!
答案 0 :(得分:2)
一旦你检索了这些线(就像你已经完成的那样),你可以将日期分割出来,例如:
>>> "2014-04-28 16:09:51:579491 Computer 0 4"[:26]
'2014-04-28 16:09:51:579491'
鉴于此,您可以使用datetime.strptime
对其进行解析。我会告诉你弄清the appropriate format codes。将两个日期解析为datetime
个对象后,您可以减去它们以获得timedelta
个对象,您可以随意处理。当当!
至于检索每一行的最后一个值,您可以调用split
,不带参数在空格上拆分,并使用[-1]
检索最后一项。然后根据需要将它们存储在列表中。
答案 1 :(得分:0)
def getvalues(x):
x=x.split(' ')
[year,month,day]=x[0].split('-')
[hour,minute,second,mili]=x[1].split(':')
rightnumbers=x[-1]
return [year,month,day,hour,minute,second,mili],rightnumbers
def getdate(d1,d2):
labels=['years','months','days','hours','minutes','seconds','miliseconds']
v=[str(abs(int(i[1])-int(i[0])))+' '+labels.pop(0) for i in zip(d1,d2)]
v=[str(i) for i in v if i[0][0]!='0']
v[-1]='and '+str(v[-1])
return ','.join(v)
#then call with this:
newf=getvalues(fline)
newl=getvalues(lline)
print getdate(newf[0],newl[0])
listyouwanted=[newf[1],newl[1]]