1 回答
TA贡献1836条经验 获得超4个赞
使用 defaultdict 的做法非常正确,但是有一种简单的方法可以检查某个键是否在一行中,这就是关键字in。如果您事先知道关键字是什么,那么这就是我将使用的代码:
from collections import defaultdict
def collect_data():
try:
occurrences = defaultdict(lambda: defaultdict(int))
keys = {'Created', 'modified', 'deleted', 'moved'}
with open('myFileMonitor.log', 'r') as f:
for line in f:
date = line.split(' ')[0]
for key in keys:
if key in line:
occurrences[date][key] += 1
for date in occurrences:
for key in occurrences[date]:
print(date+','+key+','+str(occurrences[date][key]))
except FileNotFoundError:
print("Exception error: File not found!")
输出:
2020-09-25,Created,4
2020-09-25,moved,3
2020-09-25,modified,10
2020-09-25,deleted,2
2020-09-30,Created,4
2020-09-30,modified,3
2020-09-30,deleted,3
您还可以执行一些操作,例如定义要打印日期和键的顺序或在循环之前进行排序(如果需要)。
添加回答
举报