python 文件查找及内容匹配方法


Posted in Python onOctober 25, 2018

需求:程序开发中有大量的接口,但在实际的使用中有一部分是没有使用的,在开发的程序中匹配这些接口名,找到哪些接口从没有使用过。将这些没有使用过的接口名保存下来。

代码结构:

结构解析:

1、find.py 是文件查找及匹配程序

2、input_files.txt是待匹配内容

文件格式如下:

3、result.txt 用于存放查找结果

格式同上

4、text.txt 用于测试的文档(可忽略)

实际代码:

find.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os, re, datetime


class Find(object):
 def __init__(self, root, input_file):
  """
    --初始化
  """
  self.root = root # 文件树的根
  self.input_files = [] # 待查询的字符串集合
  self.files = [] # 待匹配的文件集合
  self.current = 0 # 正在匹配的文件集合的位置

  f = file(input_file, "r")
  old_content = f.read()
  f.close()
  self.input_files = old_content.split('\n') # 将待匹配字符串保存在数组中

 @staticmethod
 def find_file(self):
  """
  --查找文件,即遍历文件树将查找到的文件放在文件集合中
  :return:
  """
  # python中的walk方法可以查找到所给路径下的所有文件和文件夹,这里只用文件
  for root, dirs, files in os.walk(self.root, topdown=True):
   for name in files:
    self.files.append(os.path.join(root, name))
    #  print(os.path.join(root, name))
    # for name in dirs:
    #  print(os.path.join(root, name))

 @staticmethod
 def walk(self):
  """
  --逐一查找,并将结果存入result.txt文件中
  :param self:
  :return:
  """
  for item1 in self.files:
   Find.traverse_file(self, item1)
  try:
   result = ''
   for item3 in self.input_files:
    result += item3 + '\n'
   f = file("./result_files.txt", "w")
   f.write(result)
   f.close()
  except IOError, msg:
   print "Error:", msg
  else:
   print "OK"

 @staticmethod
 def traverse_file(self, file_path):
  """
  --遍历文件,匹配字符串
  :return:
  """
  f = file(file_path, "r")
  file_content = f.read()
  f.close()
  input_files = []
  for item2 in self.input_files:
   if item2:
    # 正则匹配,不区分大小写
    searchObj = re.search(r'(.*)' + item2 + '.*', file_content, re.M | re.I)
    if searchObj:
     continue
    else:
     input_files.append(item2)
  self.input_files = input_files


if __name__ == "__main__":

 print datetime.datetime.now()
 findObj = Find('F:\\projects', "./input_files.txt")
 findObj.find_file(findObj)
 findObj.walk(findObj)
 print datetime.datetime.now()

以上这篇python 文件查找及内容匹配方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python+Django+apache的配置方法详解
Jun 01 Python
Python3 Random模块代码详解
Dec 04 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
详解flask入门模板引擎
Jul 18 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
python实现画出e指数函数的图像
Nov 21 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
Python Flask异步发送邮件实现方法解析
Aug 01 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 Python
python 将Excel转Word的示例
Mar 02 Python
利用python循环创建多个文件的方法
Oct 25 #Python
用python生成1000个txt文件的方法
Oct 25 #Python
Python爬虫之正则表达式的使用教程详解
Oct 25 #Python
python实现键盘控制鼠标移动
Nov 27 #Python
解决python 无法加载downsample模型的问题
Oct 25 #Python
python实现写数字文件名的递增保存文件方法
Oct 25 #Python
python hook监听事件详解
Oct 25 #Python
You might like
PHP二维数组去重算法
2016/12/17 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
python进阶教程之词典、字典、dict
2014/08/29 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
医院护士的求职信
2014/01/03 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
教师简历自我评价
2014/02/03 职场文书
超市主管竞聘书
2015/09/15 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python