使用python递归子目录处理日志文件
重要说明:
(1)python使用4个空格进行层次缩进的(不是tab),在eclipse里面可以直接使用tab缩进,是因为eclipse会实时地将tab转成4个空格
(2)在eclipse中安装pyDev插件,就可以调试python脚本了
(3)如果在python文件中存在中文字符,需要在python文件的开头处指明文件的编码类型,形式如:#coding=gbk
(4)以下代码使用的是python2.7.3版本
+++++++++ main.py +++++++++
#coding=gbk # filename : main.py # author : kekec # date : 20140813 import os,sys import filedir import filter file_suffix = '*.txt' root_path = 'F:\\新建文件夹\\20140714' result_path = unicode('result.txt' , "utf8") wfile = open(result_path, 'w') for i in filedir.search_file(file_suffix, root_path): print i bfile = False; rfile = open(i, 'r') while 1: line = rfile.readline() if not line: break if (False == filter.is_filter(line)): if (False == bfile): wfile.write(i) wfile.write('\n') bfile = True print line wfile.write(line) wfile.flush() rfile.close() wfile.close()
+++++++++ filedir.py +++++++++
#coding=gbk # filename : filedir.py # author : kekec # date : 20140813 import os,sys,fnmatch def search_file(pattern="*.txt", root=os.curdir): for path, dirs, files in os.walk(os.path.abspath(root)): for filename in fnmatch.filter(files, pattern): yield os.path.join(path, filename)
+++++++++ filter.py +++++++++
#coding=gbk # filename : filter.py # author : kekec # date : 20140813 ALOG_0 = '[ERROR]' BLOG_0 = 'OnGameUpdateDB' CLOG_0 = 'Field25' DLOG_0 = 'execute' ELOG_0 = 'failed' def is_filter(line): a = line.find(ALOG_0) >= 0 b = line.find(BLOG_0) >= 0 c = line.find(CLOG_0) >= 0 d = line.find(DLOG_0) >= 0 e = line.find(ELOG_0) >= 0 return (a and b and c and d and e)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)