使用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 29 Python
python去除字符串中的换行符
Oct 11 Python
Python验证文件是否可读写代码分享
Dec 11 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
在Python 的线程中运行协程的方法
Feb 24 Python
详解pycharm自动import所需的库的操作方法
Nov 30 Python
ASP.NET Core中的配置详解
Feb 05 Python
使用python向MongoDB插入时间字段的操作
May 18 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
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
微信access_token的获取开发示例
2015/04/16 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
实现vuex原理的示例
2020/10/21 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
Python实现重建二叉树的三种方法详解
2018/06/23 Python
Django 连接sql server数据库的方法
2018/06/30 Python
TensorFlow Session会话控制&Variable变量详解
2018/07/30 Python
护士自我鉴定范文
2013/10/06 职场文书
税务干部鉴定材料
2014/02/11 职场文书
教堂婚礼主持词
2014/03/14 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
中学生英语演讲稿
2014/04/26 职场文书
新法人代表任命书
2014/06/06 职场文书
施工安全标语
2014/06/07 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
检察院起诉书
2015/05/20 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python