我有一个总是这样的文本文件:
977-183 BCA-0055 2014-02-19 10:08:13.61
977-001 BCA-0058 2014-02-19 10:29:08.18
977-013 BCA-0064 2014-02-19 10:28:35.73
977-129 BCA-0079 2014-02-19 10:15:45.24
这些是发电机。我的目标是添加一个额外的列,显示它们到目前为止运行的总小时数,也就是我运行脚本的时间。我是python的新手而且卡住了。我已经想出如何制作一个日期时间对象?在现在的时间。我原本希望在我的计算中使用它(timedelta?)但是无法在文本文件中为时间创建日期时间以继续。 我已经尝试了一些东西并且读了很多但没有运气,这里的代码显示了我最近的尝试:
import datetime
import time
i = datetime.datetime.now()
print i
# this is what the raw data looks like
# 977-183 BCA-0055 2014-02-19 10:08:13.61
raw0 = open("genParse.txt", "r") # text file containing date and time
fin0 = open("elapsed_time.txt", "w") # will contain elapsed times
for line in raw0:
if '977-' in line:
line = line.split()
date = line[2]
time = line[3]
# create datetime object for use in elapsed time calculations
#tnew = datetime.datetime(date[0:4], date[5:7], date[8:10])
print date[0:4], date[5:7], date[8:10]
答案 0 :(得分:3)
使用datetime.datetime.strptime()
将字符串解析为datetime.datetime()
个对象:
dt = datetime.datetime.strptime(date + ' ' + time, '%Y-%m-%d %H:%M:%S.%f')
现在你可以计算经过的时间:
elapsed = now - dt
是timedelta
对象。
演示:
>>> import datetime
>>> now = datetime.datetime.now()
>>> date = '2014-02-19'
>>> time = '10:08:13.61'
>>> dt = datetime.datetime.strptime(date + ' ' + time, '%Y-%m-%d %H:%M:%S.%f')
>>> dt
datetime.datetime(2014, 2, 19, 10, 8, 13, 610000)
>>> now - dt
datetime.timedelta(6, 30419, 490913)
此处生成的timedelta
对象的值为6天,30419秒和490913微秒。如何将其格式化为字符串取决于您。
答案 1 :(得分:2)
如果您想获得条目与执行脚本之间的区别:
from datetime import datetime
raw0 = open("genParse.txt", "r") # text file containing date and time
fin0 = open("elapsed_time.txt", "w") # will contain elapsed times
for line in raw0:
if '977-' in line:
line = line.split()
dts = '%s %s' % (line[2], line[3])
now = datatime.now()
fmt = '%Y-%m-%d %H:%M:%S.%f'
time_diff = datetime.strptime(now, FMT) - datetime.strptime(dts, FMT)
显然,您可以使用time_diff
对象进行任何操作,timedelta
。打印,归档等。这只是扩展您已编写的代码。与Python一样,有很多方法可以实现相同的目标。