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 相关文章推荐
跟老齐学Python之复习if语句
Oct 02 Python
Python的Flask框架与数据库连接的教程
Apr 20 Python
python实现文件快照加密保护的方法
Jun 30 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
Python中关于浮点数的冷知识
Sep 22 Python
Python for i in range ()用法详解
Sep 18 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
python 实现图像快速替换某种颜色
Jun 04 Python
Django cookie和session的应用场景及如何使用
Apr 29 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
杏林同学录(三)
2006/10/09 PHP
PHP读取XML值的代码(推荐)
2011/01/01 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP curl使用实例
2015/07/02 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
简单实现python爬虫功能
2015/12/31 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
销售顾问工作计划书
2014/08/15 职场文书
场地使用证明模板
2014/10/25 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
关于python爬虫应用urllib库作用分析
2021/09/04 Python