实现功能:
日志文件分析,找出包含关键字的行,并写入到新的文件中;
逐行匹配,关键字可以同时传入多个(使用“|”分割),也可以一行匹配多个关键字(使用&分割)
例如: > analysislog java|python&2.7
就会找出包含java的行,并写入java.log文件中;还会找出包含python并且包含2.7关键字的行,并写入python&2.7.log的文件中
1 #-*- coding:utf8 -*- 2 3 import os, sys, time 4 5 6 def analysislog(filepath, keyword): 7 if not os.path.exists(filepath): 8 print "File not found !" 9 raw_input("") 10 sys.exit() 11 12 keywordlist = keyword.split("|") 13 fileobjlist = {} 14 for key in keywordlist: 15 fileobjlist[key] = open(key+".log", 'w') 16 17 logfile = open(filepath, 'r') 18 19 while 1: 20 logline = logfile.readline() 21 22 if logline == "": 23 break 24 25 for key in keywordlist: 26 if key.find("&") <> -1: 27 andkeylist = key.split("&") 28 andflag = 1 29 for andkey in andkeylist: 30 if logline.find(andkey) == -1: 31 andflag = 0 32 if andflag: 34 fileobjlist[key].write(logline) 35 36 else: 37 if logline.find(key) <> -1: 39 fileobjlist[key].write(logline) 40 for key in keywordlist: 41 fileobjlist[key].close() 42 43 44 logfile.close() 45 46 47 def appendtonewfile(logstr, newlogname): 48 newlogfile = open(os.path.join(os.getcwd(), newlogname),"a") 49 50 newlogfile.write(logstr) 51 52 newlogfile.close 53 54 55 56 if __name__ == "__main__": 57 if len(sys.argv) == 1 : 58 logfilepath = raw_input("Please input the path of the log -> ") 59 keywords = raw_input("Please input the keywords(split by |) -> ") 60 elif len(sys.argv) == 2 : 61 logfilepath = sys.argv[1] 62 keywords = raw_input("Please input the keywords(split by |) -> ") 63 elif len(sys.argv) == 3 : 64 logfilepath = sys.argv[1] 65 keywords = sys.argv[2] 66 else : 67 print "Illegal Parameters...\n AnalysisLog.py [logpath] [keywords] " 68 raw_input("") 69 sys.exit() 70 71 72 print "Log Path: %s"%logfilepath 73 print "Keywords: %s"%keywords.replace("|", " ") 74 75 starttime = time.time() 76 analysislog(logfilepath, keywords) 77 endtime = time.time() 78 print "Time used: ",(endtime - starttime)," s" 79 80
PS: 可以使用 pyinstall 打包成exe程序。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥