Python基于正则表达式实现检查文件内容的方法【文件检索】


Posted in Python onAugust 30, 2017

本文实例讲述了Python基于正则表达式实现检查文件内容的方法分享给大家供大家参考,具体如下:

这个是之前就在学python,欣赏python的小巧但是功能强大,是连电池都自带的语言。平时工作中用Java ,觉得python在日常生活中比java用处要大,首先语法没那么复杂,特别是io的操作,java里要写一大坨没关的代码。还有就是不用编译,而且linux系统默认都会自带。

这次遇到的问题是工作当中想要迁移一个系统中的一个模块,这个时候需要评估模块里的代码有没有对其他代码强依赖,就是有没有import 其他模块的代码。如果通过人肉来坐,少量的文件还好,如果有大量的文件实在是很悲剧。这个时候就想起可以用pytho来检索文件,通过正则表达式分析文件内容,把有问题的文件名打印出来就可以了。

import os
import os.path
import re
packDir='/**/src/main/java/com/hz/yk/auction'
p1=re.compile(r"yk\.((?!auction)\w)+\b")
p2=re.compile(r"yk\.((?!domain)\w)+\b")
p3=re.compile(r"yk\.((?!utils)\w)+\b")
def processDirectory(args,dirname,filenames):
  # print 'Directory',dirname
  for filename in filenames:
    if os.path.splitext(filename)[1]=='.java':
      # print 'file',filename
      fileObj=open(dirname+ "/"+filename)
      hasOther=False
      for line in fileObj:
        if p1.search(line) and p2.search(line) and p3.search(line):
          hasOther=True
          print line
      if hasOther:
        print 'file:',filename
def search():
  os.path.walk(packDir,processDirectory,None)
if __name__ == '__main__':
  search()

因为希望看到应用其他模块的代码,所以排除掉自己的模块名auction和公共的应用domain,utils 。对剩下的符合条件的打印出import这句和文件名sikuli

Python 相关文章推荐
在Linux中通过Python脚本访问mdb数据库的方法
May 06 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
python实现NB-IoT模块远程控制
Jun 20 Python
使用python3构建文件传输的方法
Feb 13 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
Python flask框架端口失效解决方案
Jun 04 Python
python中元组的用法整理
Jun 15 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
python套接字socket通信
Apr 01 Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 #Python
Python导入模块时遇到的错误分析
Aug 30 #Python
简单学习Python多进程Multiprocessing
Aug 29 #Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 #Python
Python实现文件内容批量追加的方法示例
Aug 29 #Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 #Python
Python 3.x读写csv文件中数字的方法示例
Aug 29 #Python
You might like
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
一个网马的tips实现分析
2010/11/28 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
python中解析json格式文件的方法示例
2017/05/03 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
美国性感内衣店:Yandy
2018/06/12 全球购物
农民工工资支付承诺函
2014/03/31 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
遗愿清单观后感
2015/06/09 职场文书
交通安全温馨提示语
2015/07/14 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server