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
您還可以執行一些操作,例如定義要打印日期和鍵的順序或在循環之前進行排序(如果需要)。
添加回答
舉報