python解析⽇志,获取想要的数据
最常用的排序算法由于⽼⼤需要对⽇志进⾏解析,获取到相应桩的信息,所以我写了个专门的解析脚本,就是执⾏的时间有点长,如果⽤java的话应该可以快2/3.练⼀下python.
在该脚本中遇到的问题就是des解密的时候有⼀个固定8位的key.当时使⽤32位的长key,每次都报错,后来发现可以先使⽤8位空key设置,再setKey(KEY)为32位的.解析截取到的数据时,看似json格式,其实并不是,所以单写了个解析⽅法.
# -*- coding: utf-8 -*-
import os
import linecache # 对⽂件进⾏⾏缓存,可以直接取到想要的⾏值
import base64  # base64解码
import pandas as pd # 进⾏格式化数据
excel常用函数公式表乘法from pyDes import *
from Crypto import Random
import sys
from urllib import parse # 进⾏urlencode
import time    # 记录时间
import json    # json转化
FILEDIR = r'E:\aaa'
KEY = '' # 秘钥
PILENUMBERS = ['1011895210701234176-1',
'1011895210701234176-2',
'1011895284617453568-1',
'1011895284617453568-2',
'1011895333984407552-1',
'1011895333984407552-2',
'1011895376523038720-1',
'1011895376523038720-2',
'1011895424895950848-1',
'1011895424895950848-2']
def read_file(filelist):
time = []
cipherText = []
plainText = []
for filename in filelist:
filename = FILEDIR + '\\' + filename
if ists(filename):
cache_data = lines(filename)
python解析json文件
for line in range(len(cache_data)):
if r'DES》》Base64后' in cache_data[line]:
str = cache_data[line][len('>DES》》Base64后>'):]
plain = des_decrypt(str)
s2 = analysis(plain)['pileNumber']
if s2 in PILENUMBERS:
time.append(cache_data[line + 3][0:len('2019-03-12 20:13:04')])
cipherText.append(str)
plainText.append(plain)
dataframe = pd.DataFrame({'时间': time, '密⽂': cipherText, '明⽂': plainText})
<_csv(FILEDIR + '\\' + 'wx.csv', index=False, sep=',', encoding='gbk')
# 获取⽂件夹下所有的⽂件
def file_name(filedir):
filelist = os.listdir(filedir)
return filelist
# des解密
def des_decrypt(str):
cipherX = des(key='        ', w().read(8), pad=None, padmode=PAD_PKCS5)
cipherX.setKey(KEY)
b = cipherX.decrypt(base64.b64decode(str))
return parse.unquote(bytes.decode(b)).replace('+', '')
# 解析{uid='61916',terminal='web',id='61916',pileNumber='1011895424895950848-2'}
yuan = r"{uid='61916',terminal='web',id='61916',pileNumber='1011895424895950848-2'}"
def analysis(str):
new_str = '{'
d = place('=', ':')
for i in range(len(d.split(','))):
if '{' in d.split(',')[i].split(':')[0]:
key = "'" + d.split(',')[i].split(':')[0].replace('{', '') + "'"
else:
key = "'" + d.split(',')[i].split(':')[0] + "'"
excel教程视频网资源if '}' in d.split(',')[i].split(':')[1]:
value = d.split(',')[i].split(':')[1].replace('}', '')
else:
value = d.split(',')[i].split(':')[1]
f = key + ':' + valuecss子元素hover父元素变颜
if 0 < i < len(d.split(',')):
new_str = new_str + ',' + f
j2seelif i == 0:
new_str = new_str + f
return json.loads((new_str + '}').replace("'", '"'))
# print(analysis(yuan)['pileNumber'])
if __name__ == '__main__':
print('开始时间:', time.strftime('%Y.%m.%d %H:%M:%S', time.localtime(time.time())))    read_file(file_name(FILEDIR))
print('结束时间:', time.strftime('%Y.%m.%d %H:%M:%S', time.localtime(time.time())))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。