使用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实现批量下载文件
May 17 Python
基python实现多线程网页爬虫
Sep 06 Python
深入解析Python中的list列表及其切片和迭代操作
Mar 13 Python
通过5个知识点轻松搞定Python的作用域
Sep 09 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
tensorflow实现简单逻辑回归
Sep 07 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
May 21 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
python 并发下载器实现方法示例
Nov 22 Python
pytorch程序异常后删除占用的显存操作
Jan 13 Python
python中封包建立过程实例
Feb 18 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 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 压缩文件夹的类代码
2009/11/05 PHP
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
php截取中文字符串函数实例
2015/02/23 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
python打开网页和暂停实例
2014/09/30 Python
深入理解python中的atexit模块
2017/03/07 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
python3 简单实现组合设计模式
2020/07/02 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
工程负责人任命书
2014/06/06 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
护士工作心得体会
2016/01/25 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
把77A收信机改造成收音机
2022/04/05 无线电