#coding = utf-8
import re
import os
import sys
import csv
import copy
# 1.读取文件
# 2.正则匹配
# 3.提取信息并输出到CSV文件
def read_file(path):
data_list = []
data_unit = {
'username' : 'None',
'online_time' : 'None',
'uplink_packets' : 'None',
'uplink_bytes' : 'None',
'downlink_packets' : 'None',
'downlink_bytes' : 'None',
}
file = open(path,'r')
file_data = file.readlines()
for index in range(0,len(file_data)):
find_username = re.findall(r' Username: (.*)',file_data[index],re.I)
if find_username:
print(find_username)
data_unit['username'] = find_username[0]
for i in range(index,index+5):
find_time = re.findall(' Online time\(hh:mm:ss\): (.*)',file_data[i],re.I)
find_uplink = re.findall(r' IPv4 uplink packets/bytes: (.*)',file_data[i],re.I)
find_downlink = re.findall(r' IPv4 downlink packets/bytes: (.*)',file_data[i],re.I)
if find_time:
print(find_time)
temp = find_time[0].split(':')
time =int(temp[0])*3600+int(temp[1])*60+int(temp[2])
# print(time)
data_unit['online_time'] = time
if find_uplink:
print(find_uplink)
temp = find_uplink[0].split('/')
print(temp)
data_unit['uplink_packets'] = temp[0]
data_unit['uplink_bytes'] = temp[1]
if find_downlink:
print(find_downlink)
temp = find_downlink[0].split('/')
print(temp)
data_unit['downlink_packets'] = temp[0]
data_unit['downlink_bytes'] = temp[1]
print("##################")
data_list.append(copy.deepcopy(data_unit))
file.close
return data_list
if __name__ == '__main__':
# path1 = r'C:\Users\w13359\Desktop\gch\3.txt'
# path2 = r'C:\Users\w13359\Desktop\gch\4.txt'
path1 = input('请输入文件1路径:')
path2 = input('请输入文件2路径:')
data_list1 = read_file(path1)
data_list2 = read_file(path2)
res_list = []
dic = {
'username' : 'None',
'time_difference' : 'None',
'uplink_speed' : 'None',
'downlink_speed' : 'None',
}
length = len(data_list1)
for index in range(0,length):
t = data_list2[index]['online_time'] - data_list1[index]['online_time']
upspeed = (int(data_list2[index]['uplink_bytes']) - int(data_list1[index]['uplink_bytes']))/t
downspeed = (int(data_list2[index]['downlink_bytes']) - int(data_list1[index]['downlink_bytes']))/t
dic['username'] = data_list1[index]['username']
dic['time_difference'] = t
dic['uplink_speed'] = upspeed
dic['downlink_speed'] = downspeed
res_list.append(copy.deepcopy(dic))
# print(res_list)
cur_path = os.path.abspath('.') #获取当前工作目录路径
# print(cur_path)
csv_path = cur_path + '\\' +'Res'+'\\'+'Res.csv'
if os.path.exists(csv_path):
os.remove(csv_path)
csv_file = open(csv_path,'a',newline='')
writer = csv.writer(csv_file)
writer.writerow(['用户ID','时间差/s','uplink_speed(Byte/s)','downlink_speed(byte/s)'])
for index in range(0,length):
# print(res_list[index]['username'])
print('\n',res_list[index]['uplink_speed'],res_list[index]['downlink_speed'])
if res_list[index]['uplink_speed'] >= res_list[index]['downlink_speed']:
row = [res_list[index]['username'],res_list[index]['time_difference'],res_list[index]['uplink_speed'],res_list[index]['downlink_speed']]
# print("@@@@@@@@@@@@@@@@@@@@@\n")
print(row)
writer.writerow(row)
csv_file.close()
print("\n@@@@@@@@@@@@@@@@@@@@@\n")
print("处理结束!")
print("\n@@@@@@@@@@@@@@@@@@@@@")
python-使用正则匹配提取相关信息
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 这个应用场景挺多的 比如我想提取出注释信息中previous_id对应的基因ID,乍一看以为可以用cut命令一点一...
- 最近某教育app上看到了一些很不错的视频,可惜这些活动期的视频有期限限制,于是打算把他们都下载下来 首先使用抓包工...
- 前提条件: 1.安装了zabbix 2.配置了snmptrap监控项,并且有对 snmptrap返回的信息进行分类...