使用python做文件分析,并写入excel(二)

使用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)

    原文作者:wangcc_sd
    原文地址: https://www.jianshu.com/p/830bd66f6187
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞