我需要計算給定數量的os文本模式出現在日誌文件中的次數,並將其存儲在字典中。在循環中遞增詞典:
我的問題是,我的代碼是計算文件的所有條目到每種文本模式。
日誌文件看起來像這樣:
我做錯了什麼?
>Feb 1 00:00:02 bridge kernel: INBOUND TCP: IN=br0 PHYSIN=eth0 OUT=br0 >PHYSOUT=eth1 SRC=XXX.XXX.XXX.XXX DST=XXX.XXX.XXX.XXX LEN=40 TOS=0x00 >PREC=0x00 TTL=110 ID=12973 PROTO=TCP SPT=220 DPT=6129 WINDOW=16384 RES=0x00 >SYN URGP=0
>Feb 1 00:00:02 bridge kernel: INBOUND TCP: IN=br0 PHYSIN=eth0 OUT=br0 >PHYSOUT=eth1 SRC=XXX.XXX.XXX.XXX DST=XXX.XXX.XXX.XXX LEN=40 TOS=0x00 >PREC=0x00 TTL=113 ID=27095 PROTO=TCP SPT=220 DPT=6129 WINDOW=16384 RES=0x00 >SYN URGP=0
我的代碼是這樣的時刻:
#!//usr/bin/python3
import sys
import os
import re
from collections import defaultdict
tipos={}
p= re.compile ('bridge kernel:.*:')
with open (sys.argv[1], 'r') as f:
for line in f:
match = p.search(line)
if match:
taux=(line.split(":") [3])
tipos[taux]=1
print (tipos)
的代碼不給一個錯誤,但所有主要有保存價值。
我讀過關於defaultdict
和Counters
,但無法讓他們工作。
請幫助我。
都等於1? – jacoblaw
也許你的意思是'ipos [taux] + = 1'? – lpiner