python 截取某一天的日志,简单操作
2017-12-20 16:53
387 查看
1、解释大神之作,致敬“种心收默”(http://www.cnblogs.com/drgcaosheng/p/3747820.html)
2、运行方式和结果。
执行顺序如下:
(1)、先调用chuli函数,将python cao.py命令后实际的2个参数传递给chuli函数。
(2)、执行chuli函数,打印开始的*号,生成新文件名,并调用openfile函数,并且将三个参数传给了openfile函数。
(3)、执行openfile函数,读取文件,搜索关键字,搜索完成后调用writenewfile函数,写入新文件中。
(4)、执行writenewfile函数,以追加方式打开新文件,然后把匹配的行一行一行写入到新文件中。
3、小弟python知识、逻辑有限,*args传多个值把我搞晕了,所以我改下:
#!/usr/bin/python #-*- coding:utf-8 -*- import re,sys def openfile(*args): print args try: f=open(args[0],'r') #args[0]表示要打开的文件,第一个参数下标的值 try: while True: lines = f.readlines(100) if not lines: #假如没有行了,则跳出整个循环 break for line in lines: #循环每一行 if(line.find(args[1])>=0): #args[1]表示要搜索的文字,第二个参数下标的值 writenewfile(line,args[2]) #假如存在搜索的关键字,然后传到writenewfile函数,args[2]表示新文件 finally: f.close() print '*'*21+"END"+"*"*21 #打印结束星号 except IOError: print args[0]+" not find!" def writenewfile(*args): #定义写入新文件 try: newfile=open(args[1],'a') #追加模式打开新文件,没有会自动建一个 try: newfile.write(args[0]) #一行一行的写到新文件中 finally: newfile.close() except IOError: print args[1]+"not find!!" #如果错误就提示新文件找不到 def chuli(*args): print '*'*20+"START"+"*"*20 #打印开始星号 logre=re.split('\.',args[0]) #按点切割文件名(所以文件名要有点号) newlogfile=logre[0]+args[1]+"."+logre[1] #新文件的名字等于第一个点号前面+你搜索字符+点号+第一个点号后面的字符 openfile(args[0],args[1],newlogfile) #调用openfile函数,args[0]和args[1]是chuli传过来sys.argv[1],sys.argv[2]。 if __name__=='__main__': #意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。 chuli(sys.argv[1],sys.argv[2]) #获取python cao.py 104.250.149.146-test.log "Dec 18"的实际参数传给chuli函数的args[0]和args[1]
2、运行方式和结果。
[root@localhost ~]# python cao.py 104.250.3.77-test.log "Dec 18" ********************START******************** ('104.250.3.77-test.log', 'Dec 18', '104Dec 18.250') *********************END*********************
执行顺序如下:
(1)、先调用chuli函数,将python cao.py命令后实际的2个参数传递给chuli函数。
(2)、执行chuli函数,打印开始的*号,生成新文件名,并调用openfile函数,并且将三个参数传给了openfile函数。
(3)、执行openfile函数,读取文件,搜索关键字,搜索完成后调用writenewfile函数,写入新文件中。
(4)、执行writenewfile函数,以追加方式打开新文件,然后把匹配的行一行一行写入到新文件中。
3、小弟python知识、逻辑有限,*args传多个值把我搞晕了,所以我改下:
#!/usr/bin/python #-*- coding:utf-8 -*- import re,sys def openfile(srcfile,search,decfile): try: f=open(srcfile,'r') try: while True: lines = f.readlines(100) if not lines: break for line in lines: if(line.find(search)>=0): writenewfile(line,decfile) finally: f.close() print '*'*21+"END"+"*"*21 except IOError: print srcfile+" not find!" def writenewfile(line,decfile): try: newfile=open(decfile,'a') try: newfile.write(line) finally: newfile.close() except IOError: print decfile+"not find!!" def makefile(srcfile,search): print '*'*20+"START"+"*"*20 namesplit=re.split('\.',srcfile) decfile=namesplit[0]+search+"."+namesplit[1] openfile(srcfile,search,decfile) if __name__=='__main__': makefile(sys.argv[1],sys.argv[2])
相关文章推荐
- python爬虫日志(8)python操作mysql的简单知识
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 基于Python项目的Redis缓存消耗内存数据简单分析(附详细操作步骤)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- Python简单操作笔记
- python文件操作(2)--分析扫描得到的日志文件把文件状态导入Excel表格
- python-字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- python3 - requests库简单操作
- python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
- python操作redis简单例子
- 简单整理MySQL的日志操作命令
- python 通过thrift 简单操作hbase
- python3 - excel简单操作
- Python操作json数据的一个简单例子
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- Python:简单的文件操作
- 截取与分析日志文件的特定行数的操作
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 基于Python实现一个简单的银行转账操作
- Python学习笔记3-文件的简单操作