Python学习Python学习日志

使用python做文件分析

2019-04-11  本文已影响15人  wangcc_sd

背景:一个小伙伴让我帮忙分析下文件,样例

Host: 223.99.141.1 ()   Ports: 80/open/tcp//http//HTTPD/, 646/open/tcp//tcpwrapped///, 832/open/tcp//ssl|netconfsoaphttp?///

想要达到的效果

223.99.141.1: 80 open tcp  http  HTTPD 
223.99.141.1: 646 open tcp  tcpwrapped   
223.99.141.1: 832 open tcp  ssl|netconfsoaphttp?  

就是把其中的ip地址还有端口和协议提取出来,可以用re模块直接匹配出来的,但是re不太熟练,只能这样搞了。。。上代码

# -*-coding:utf-8 -*-
# BY WANGCC
#filename:parse.py

import re,sys,os
#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(data):
    new_f = open(put_name, 'a+')
    new_f.write(data+'\n')
    new_f.close()
def parser():
    pat = re.compile(' (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) ')
    lines=[]
    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)
                        str_port_Agreement=(" ".join(port_Agreement))
                        data = (str_ip+":"+str_port_Agreement)
                        w_file(data)

def main():
    if not os.path.exists(file_name) :
        exit('输入文件不存在')
    parser()
    if  os.path.exists(put_name) :
        print('执行成功! ---->', put_name)
    else:
        exit('输出文件不存在,请检查!')

main()

运行样例

python parse.py a.txt b.txt

整体结果比较简单,但是可以实现需求就行了。。哈哈哈

上一篇下一篇

猜你喜欢

热点阅读