使用python做文件分析
接上一篇文章,把分析后的数据存入excel
需要先安装两个插件
pip install xlrd xlwt xlutils
pip install xlsxwriter
上代码
# -*-coding:utf-8 -*-
# BY WANGCC
import re,sys,os
import xlsxwriter
from xlrd import open_workbook
from xlutils.copy import copy
#pip install xlrd,xlsxwriter
#Host: 223.99.141.24 () Ports: 80/open/tcp//http//nginx/, 443/open/tcp//http//nginx/
file_name=sys.argv[1]
put_name=sys.argv[2]
def w_file(ip,data):
if not os.path.exists(put_name+".xls"):
workbook = xlsxwriter.Workbook(put_name+".xls") # 建立
worksheet = workbook.add_worksheet('employee')
workbook.close()
else:
r_xls = open_workbook(put_name+".xls") # 读取excel文件
row = r_xls.sheets()[0].nrows # 获取已有的行数
excel = copy(r_xls) # 将xlrd的对象转化为xlwt的对象
table = excel.get_sheet(0) # 获取要操作的sheet
# 对excel表追加一行内容
table.write(row, 0, ip)
table.write(row, 1, data)
excel.save(put_name+".xls")
def parser():
pat = re.compile(' (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) ')
with open(file_name,'r') as f:
for line in f.readlines():
if "Ports" in line:
ip = re.findall(pat, line)
str_ip = (" ".join(ip))
new_line = re.split(",|:", line)
new_line.pop(1)
for i in new_line:
if len(i)>6:
port_Agreement=re.split(r'(?:/|//|\s)\s*',i)
port = port_Agreement[1]
str_port = ("".join(port))
port_Agreement.pop(1)
#print(port_Agreement)
str_port_Agreement=(" ".join(port_Agreement))
ip_port=str_ip+":"+str_port
w_file(ip_port,str_port_Agreement)
def main():
if not os.path.exists(file_name) :
exit('输入文件不存在')
parser()
if os.path.exists(put_name+".xls") :
print('执行成功! ---->', put_name+".xls")
else:
exit('输出文件不存在,请检查!')
main()
思路#
在上一个写入到txt的基础上增加了excel模块的相关处理,一开始使用xlsxwriter模块,但是该模块无法对excel追加略显麻烦,就增加了open_workbook来专门对excel进行增加追加处理,最后完成需求。
参考链接
Python之excel文件追加内容
(http://www.cnblogs.com/zhenwei66/p/8406201.html)
网友评论