使用Python编写提取日志中的中文的脚本的方法


Posted in Python onApril 30, 2015

由于工作需要在一大堆日志里面提取相应的一些固定字符,如果单纯靠手工取提取,数据量大,劳心劳力,于是自然而然想到了用Python做一个对应的提取工具,代替手工提取的繁杂,涉及中文字符,正则表达式不好匹配,但不是不可以实现,这个以后优化时再说。

需求描述:

一个父目录中存在多个子文件夹,子文件夹下有多个txt形式化的Log日志,要求从所有地方Log日志中找出CardType=9, CardNo=0时的CardID的值,并将其统计存储到一个文本文件中,要求CardID不能够重复。

需求解析:

首先获取所有的Log日志的全路径,根据路径分别加载到将各个Log日志加载到内存中进行提取分析,并将结果存储到给定的文本文件中。

解决方案:

为了尽可能的简洁通用,这里使用配置文件作为输入变量的依据。不多说,上代码:

配置文件如下:

使用Python编写提取日志中的中文的脚本的方法

103文件夹下有两个文件:log1.txt和log2.txt, 内容类似如下:

使用Python编写提取日志中的中文的脚本的方法使用Python编写提取日志中的中文的脚本的方法

Python代码实现如下:

# -*- coding: utf-8 -*-
#!/usr/bin/python
# filename: picktools.py
# codedtime:2015-3-25

import os
import configparser

# 遍历一个目录,输出所有文件名
def itemsbrowse(path):
  for home, dirs, files in os.walk(path):
    for filename in files:
      yield os.path.join(home, filename)

# 给的文件中查找对应的字符串所在行      
def findchars(filename, chars):
  file = open(filename, 'r')
  for eachline in file:
    if eachline.find(chars) >= 0:
      yield eachline
  file.close()

# 添加到指定的文件
def addtofile(filename, mygenerator):
  file = open(filename, 'a')   # 追加方式打开
  for line in mygenerator:
    file.write(line)
  file.close()

# 过滤重复的字符行
def filter(filename):
  mylist = []
  file = open(filename, 'r')
  for eachline in file:
    mylist.append(eachline.strip())
  file.close()
  
  file2 = open(os.path.splitext(filename)[0] + '_filter.txt', 'w')
  for line in list(set(mylist)):
    print(line, file = file2)
    #file2.write(line) 
  file2.close()
  

def excute():
  iniconf = configparser.ConfigParser()
  iniconf.read('config.ini')
  ifile = iniconf.get('setting', 'ifilepath')
  ofile = iniconf.get('setting', 'ofilepath')
  chars = iniconf.get('setting', 'searchstr')
  
  for fullname in itemsbrowse(ifile):
    mygenerator = findchars(fullname, chars)
    addtofile(ofile, mygenerator)
    
  filter(ofile)
      
      
if __name__ == '__main__':
  excute()

输出结果:输出两个文件result.txt 和result_filter.txt

使用Python编写提取日志中的中文的脚本的方法使用Python编写提取日志中的中文的脚本的方法

心得体会:

1、利用Python去处理一些日常的小任务,可以很方便的完成,相比较C/C++来说,这方面生产力高了不少。

2、本文设计对中文字符的处理,所以使用正则表达式不太怎么方便,但不少不可以,后续版本中会添加对正则的支持!

3、由于初学中,所以代码写的不够精炼简洁,后续进行再优化!

Python 相关文章推荐
用python实现的去除win下文本文件头部BOM的代码
Feb 10 Python
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
python实现逆波兰计算表达式实例详解
May 06 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
Python程序暂停的正常处理方法
Nov 07 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
深入了解Python enumerate和zip
Jul 16 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
详解python polyscope库的安装和例程
Nov 13 Python
Python jieba库分词模式实例用法
Jan 13 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 #Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 #Python
Python中使用Beautiful Soup库的超详细教程
Apr 30 #Python
Python中正则表达式的详细教程
Apr 30 #Python
详解在Python程序中使用Cookie的教程
Apr 30 #Python
处理Python中的URLError异常的方法
Apr 30 #Python
介绍Python的Urllib库的一些高级用法
Apr 30 #Python
You might like
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
PHP 编程的 5个良好习惯
2009/02/20 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
javascript根据像素点取位置示例
2014/01/27 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
助学金感谢信
2015/01/20 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers