在python中,计算与文件的时间差';第1行也是最后一行

在python中,计算与文件的时间差';第1行也是最后一行,python,file-io,Python,File Io,我有一个具有以下结构的日志文件: 2014-04-28 16:09:51:579491计算机0 4 2014-04-28 16:09:55:636024计算机0 6 2014-04-28 16:09:57:133587计算机0 8 2014-04-28 16:09:58:545286计算机0 10 2014-04-28 16:09:59:835178计算机0 12 2014-04-28 16:10:01:015113计算机0 14 2014-04-28 16:10:03:132038计算机0 1

我有一个具有以下结构的日志文件:

2014-04-28 16:09:51:579491计算机0 4
2014-04-28 16:09:55:636024计算机0 6
2014-04-28 16:09:57:133587计算机0 8
2014-04-28 16:09:58:545286计算机0 10
2014-04-28 16:09:59:835178计算机0 12
2014-04-28 16:10:01:015113计算机0 14
2014-04-28 16:10:03:132038计算机0 16
2014-04-28 16:10:04:373344计算机0 18
2014-04-28 16:10:05:474140计算机0 20
2014-04-28 16:10:06:334320计算机0 22
我试图找出所花费的时间,这可以通过计算第一行和最后一行的时间值之间的差异来实现。如何提取值以继续?另外,我希望数值位于行的最右侧,并将其存储到列表中

现在,我要读第一行和最后一行

newf1=open("userdata.txt","r+")
a=newf1.readlines()
fline=a[0]
lline=a[-1]
print fline,lline

感谢您的帮助

一旦检索到行(正如您已经做的那样),您就可以切掉日期,例如:

>>> "2014-04-28 16:09:51:579491  Computer    0   4"[:26]
'2014-04-28 16:09:51:579491'
有鉴于此,您可以使用。我会让你去弄清楚的。将两个日期解析为
datetime
对象后,只需减去它们即可得到
timedelta
对象,您可以随意处理该对象。塔达

至于检索每行的最后一个值,您可以调用
split
,不使用参数在空白处拆分,并使用
[-1]
检索最后一项。然后只需将它们存储在一个列表中,也可以根据需要进行存储。

如下所示:

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