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抓取网页正文的源码
Jun 11 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 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&mysql(三)
2006/10/09 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php实现的SESSION类
2014/12/02 PHP
php中JSON的使用与转换
2015/01/14 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
javascript常见操作汇总
2014/09/03 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
学习python需要有编程基础吗
2020/06/02 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
python 如何在测试中使用 Mock
2021/03/01 Python
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
应届生会计求职信
2013/11/11 职场文书
应聘自荐信
2013/12/14 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
投资入股合作协议书
2014/10/28 职场文书
新郎接新娘保证书
2015/05/08 职场文书
外出培训学习心得体会
2016/01/18 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL
Python学习之迭代器详解
2022/04/01 Python
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers