使用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单线程实现多个定时器示例
Mar 30 Python
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
python中format()函数的简单使用教程
Mar 14 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
浅谈Python3中print函数的换行
Aug 05 Python
python 获取谷歌浏览器保存的密码
Jan 06 Python
python源文件的字符编码知识点详解
Mar 04 Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
May 17 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数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
简单的php文件上传(实例)
2013/10/27 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
python re模块findall()函数实例解析
2018/01/19 Python
Django框架实现的分页demo示例
2019/05/25 Python
PyQt5响应回车事件的方法
2019/06/25 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
英文自荐信
2013/12/15 职场文书
教学质量评估实施方案
2014/03/17 职场文书
交通事故协议书范文
2014/04/16 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
南京大屠杀观后感
2015/06/02 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
手残删除python之后的补救方法
2021/06/26 Python
Python借助with语句实现代码段只执行有限次
2022/03/23 Python