使用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
整体结果比较简单,但是可以实现需求就行了。。哈哈哈