Python实现批量文件接口未调用检测与匹配

Alice
Alice
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍利用Python脚本检测项目中未调用的接口方法。通过遍历指定目录下的所有文件,结合正则表达式匹配待查接口名列表,自动识别并输出从未被引用的接口名称至结果文件,辅助代码清理与优化。

在程序开发过程中,往往存在大量定义的接口,但实际使用中部分接口可能从未被调用。本文旨在通过程序匹配这些接口名,识别出哪些接口处于未使用状态,并将这些未使用的接口名保存记录。

相关代码结构如下:

对代码结构的解析说明:

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 相关产品和应用

全部下载

专题列表