您的位置 » 首页 » 编程开发 » Python学习:python处理文本文件脚本

Python学习:python处理文本文件脚本

发表于5年前 | 作者: seay | 分类: 编程开发 | 孵化于:2013年01月11日 | 文章热度:4,109 次 全屏阅读

显示不全请点击全屏阅读

这是之前需要处理日志文件写的一个脚本,其功能是遍历所有日志文件的每一行,查找是否含有特征字符,如果存在特征字符,就取出这一行,放到另外一个文件,把没有特征字符的所有行再重新写到另外一个文件,很简单,速度很快,处理几十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:

python资料,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡


来自 Seay互联网安全博客
本文地址:http://www.cnseay.com/2018/
文章版权说明请看置顶文章,尊重作者,转载请以链接形式标明原文地址

马上分享给你的朋友吧~

发表评论

你的大名(必填)

你的邮箱(必填)

评论内容(必填)