使用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 datetime时间格式化去掉前导0
Jul 31 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
python实现批量解析邮件并下载附件
Jun 19 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
使用Python横向合并excel文件的实例
Dec 11 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
Numpy数组的广播机制的实现
Nov 03 Python
python 爬取百度文库并下载(免费文章限定)
Dec 04 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 Python
Python 阶乘详解
Oct 05 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
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
javascript中Date对象的getDay方法使用指南
2014/12/22 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
Js面试算法详解
2018/04/08 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
解读python如何实现决策树算法
2018/10/11 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
python文本数据处理学习笔记详解
2019/06/17 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
质检员岗位职责
2013/12/17 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
男方婚前保证书
2015/02/28 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
礼貌问候语大全
2015/11/10 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android