-
Notifications
You must be signed in to change notification settings - Fork 0
/
file2json.py
83 lines (73 loc) · 2.01 KB
/
file2json.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/python
# -*- coding: utf-8 -*-
import codecs
import json
#from logInfo import logInfo
#属性列表
CM_Index = 0
names = ['tid:','from:','to:','domain:','lid:','size:','result:','subject:','Eval:','Score:','ip:','optime:','destip:','bindip:','desc']
def readDataFromFile(logfilename):#日志文件路径
i = 1
try:
f = codecs.open(logfilename,'r',encoding='gbk')
for line in f.readlines():
tj = str2Json(line[line.find('[')+1:len(line)-2])
sql = 'insert into plog('
sqlvalues = ' ) values ( '
for (key,value) in tj.items():
# print tj["desc"]
sql+= key+ ','
if type(value) == int or type(value) == float:
sqlvalues += str(value)
# print key,value
else:
sqlvalues += '\"' + value + '\"'
sqlvalues+=','
f.close()
except IOError:
print "can't open such %s file"%logfilename
def str2Json(strs):
strs = strs.replace("\\,","\\")
strs = strs.replace("\"","\\\'")
parts = strs.split(',')
if len(parts)!=len(names):
strs = str2Full(strs)
elif len(parts) == len(names):
strs = strCheckparts(strs)
parts = strs.split(',')
temp = {}
for i in range(0,len(parts)):
# 去掉 []
parts[i] = parts[i].replace('[','')
parts[i] = parts[i].replace(']','')
li = parts[i].split(':',1)
if li[0] == 'size' or li[0] == 'result' or li[0] == 'optime':
temp[li[0]] = int(li[1])
elif li[0] == 'Score':
temp[li[0]] = float(li[1])
else:
temp[li[0]] = li[1]
temp["CM_Index"] = 0
return temp
def strCheckparts(strs):
bFull = True
for i in range(0,len(names)):
if strs.find(names[i]) == -1:#当前属性缺失
bFull = False
break
# print "bFull:",bFull
if bFull == False:
return str2Full(strs)
elif bFull == True:
return strs
def str2Full(strs):#补齐str
strfull = ""
for i in range(0,len(names)):
if strs.find(names[i]) == -1:#当前属性缺失
print "name[%d] lost %s"%(i,names[i])
if i != 5 or i !=6 or i != 9 or i !=11 :
strfull += "," + names[i]
else:
strfull += "," + names[i] + "0 "
strs += strfull + ']'
return strs