[英]Convert access.log file into json file using python
我正在嘗試將 nginx 的 access.log 文件轉換為 json 格式,但我面臨以下錯誤
索引錯誤:列表索引超出范圍
import json
i = 1
result = {}
with open('access.log') as f:
lines = f.readlines()
for line in lines:
r = str.split('\\s+')
result[i-1] = {'timestamp': r[0], 'monitorip': r[1], 'monitorhost': r[2], 'monitorstatus':
r[3], 'monitorid': r[4], 'resolveip': r[5]}
i += 1
print(result)
with open('data.json', 'w') as fp:
json.dump(result, fp)
以下是我要轉換的日志格式
我面臨的錯誤是:
Traceback (most recent call last):
File "/home/test.py", line 10, in <module>
result[i-1] = {'timestamp': r[0], 'monitorip': r[1], 'monitorhost':
r[2], 'monitorstatus': r[3], 'monitorid': r[4], 'resolveip': r[5]}
IndexError: list index out of range
使用line.split()
而不是str.split('\\s+')
。 split()
將常規字符串作為分隔符,而不是正則表達式。 它默認使用任何空格作為分隔符。
在嘗試使用它之前檢查r
是否有足夠的字段。 這將跳過任何不完整的行。
import json
i = 0
result = {}
with open('access.log') as f:
lines = f.readlines()
for line in lines:
r = line.split()
if len(r) >= 6:
result[i] = {'timestamp': r[0], 'monitorip': r[1], 'monitorhost': r[2], 'monitorstatus':
r[3], 'monitorid': r[4], 'resolveip': r[5]}
i += 1
print(result)
with open('data.json', 'w') as fp:
json.dump(result, fp)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.