- A+
所属分类:Seay信息安全博客
显示不全请点击全屏阅读
这是之前需要处理日志文件写的一个脚本,其功能是遍历所有日志文件的每一行,查找是否含有特征字符,如果存在特征字符,就取出这一行,放到另外一个文件,把没有特征字符的所有行再重新写到另外一个文件,很简单,速度很快,处理几十G的日志10多分钟就OK了。
#coding=gbk
import os
_R_path = "E:\\root" #要处理的文件所在目录
_W_EX_Path = "E:\\1.txt" #要存放处理出来的文件的路径(含特征字符),需存在目录名,可不存在文件
_W_O_Path = "E:\\2.txt" #要存放处理好的文件的路径(不含特征字符),需存在目录名,可不存在文件
_Count_File =0
def _Find_Str(_path):
_f = open(_path,"r")
_All_Line = _f.readlines()
_f.close()
_Count_Line =0;
_Len_Line = len(_All_Line)
_Ex_Str = "";
print("-->检查文件中")
while _Count_Line<_Len_Line: _Str = _All_Line[_Count_Line] if "特征字符一" in _Str or "特征字符二" in _Str: del _All_Line[_Count_Line] _Len_Line -= 1 _Count_Line-=1 _Ex_Str+=_Str _Count_Line+=1 print("-->正在写入文件中")
#如果该文件存在字符,则把处理好的追加到一个文件中
if _Ex_Str!="":
#保存验证存在的文件
_file = open(_W_EX_Path,"a")
_file.write(_Ex_Str+"\n")
_file.close()
_O_file = open(_W_O_Path,"a")
#保存检查过的文件
for _Over_Str in _All_Line:
_O_file.write(_Over_Str)
_O_file.close()
#如果该文件不存在字符,则读取整个文件直接追加到一个文件中,不用反复写,优化性能
else:
_O_file = open(_W_O_Path,"a")
_All_Str = open(_path,"r")
#保存检查过的文件
_O_file.write(_All_Str.read())
_O_file.close()
_All_Str.close()
def _Get_Files():
global _Count_File
if os.path.lexists(_R_path) == False:
print("-->报告 :您输入的目录不存在")
exit(0)
for _root,_dirs,_files in os.walk(_R_path):
for _file in _files:
print("-->处理 "+os.path.join(_root,_file)+" 文件中")
try:
_Find_Str(os.path.join(_root,_file))
except Exception:
print("\n-----------处理"+os.path.join(_root,_file)+"文件时发生异常,程序已停止-----------")
exit(0)
print("-->"+os.path.join(_root,_file)+" 文件处理完毕")
_Count_File+=1
print("-->目前已处理:"+str(_Count_File)+"个文件\n------------------------------")
_Get_Files()
print("报告!处理完毕!共处理文件数:"+str(_Count_File))
exit(0)
Tags:
如果您喜欢我的博客,欢迎点击图片定订阅到邮箱 也可以点击链接【订阅到鲜果】
如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡