我的文本文件由Python脚本生成,该脚本写入: [时间戳],[能源],[距离]
这是来自雷击的数据。
我想运行一个bash或python脚本来加载和解析这个文本文件并输出: A)最后一小时的打击次数(实际上属于最后一小时的时间戳的文件中有多少行) B)一天中每小时的罢工次数(与上述相同,但会输出24个值)
我的示例文本文件如下所示:
2017-05-24 16:29:20,5937,12
2017-05-24 16:30:14,950,12
2017-05-24 16:30:44,3242,12
2017-05-24 16:31:19,2615,12
2017-05-24 16:51:41,8723,24
2017-05-24 18:19:51,5166,27
2017-05-24 18:40:44,1521,37
2017-05-24 18:53:27,9309,24
2017-05-24 18:57:29,13760,20
2017-05-24 19:02:38,35905,12
2017-05-24 19:03:57,3349,12
2017-05-24 19:04:11,4935,12
2017-05-24 19:04:39,14361,12
2017-05-24 19:07:44,2726,12
2017-05-24 19:08:04,6399,12
如果以后更容易使用,我可以调整文本文件的时间格式来写[Y],[m],[d],[H],[M],[S]。 我是Python的新手,所以任何提示都值得赞赏。我不知道如何开始。 感谢
答案 0 :(得分:1)
首先,请阅读文件,使用file.readlines()
进行循环,然后使用.split(',')[0]
来提取时间戳。
然后查看datetime module - 我认为datetime.strptime
方法会有所帮助。 e.g:
>>> datetime.datetime.strptime("2017-05-24 19:04:11", "%Y-%m-%d %H:%M:%S")
datetime.datetime(2017, 5, 24, 19, 4, 11)
从那里,您可以构建一个数据结构,将数据与日期时间对象相关联,然后按datetime.hour
对它们进行排序。
答案 1 :(得分:0)
这是一种可以加载它并生成一致输出的方法。 假设:每个文本文件只能保存24小时的数据!
#!/usr/bin/env python
import csv
import datetime
d = {n: 0 for n in range(1,25)}
with open("lightning.txt", "r") as f:
filer = csv.reader(f)
for i in filer:
d[datetime.datetime.strptime(i[0],"%Y-%m-%d %H:%M:%S").hour] = (datetime.datetime.strptime(i[0],"%Y-%m-%d %H:%M:%S"), i[1], i[2])
for i in range(1,25):
if d[i] == 0:
print(str(i).zfill(2) + ':\t0')
else:
print(str(i) + ':\t' + str(d[i][2]))