使用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的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
python 多线程重启方法
Feb 18 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
python常用数据重复项处理方法
Nov 22 Python
Python: glob匹配文件的操作
Dec 11 Python
Python实现一个论文下载器的过程
Jan 18 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 Python
python的变量和简单数字类型详解
Sep 15 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
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
动态控制Table的js代码
2007/03/07 Javascript
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
python爬虫常用的模块分析
2014/08/29 Python
python中的字符串内部换行方法
2018/07/19 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
Python中实现输入一个整数的案例
2020/05/03 Python
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
医药专业应届毕业生求职信范文
2014/01/01 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
2015年教师新年寄语
2014/12/08 职场文书
村干部任职承诺书
2015/01/21 职场文书
技术负责人岗位职责
2015/02/10 职场文书
乱世佳人观后感
2015/06/08 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
三八节祝酒词
2015/08/11 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
python实现自动清理文件夹旧文件
2021/05/10 Python
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技