python 文件查找及内容匹配方法
需求:程序开发中有大量的接口,但在实际的使用中有一部分是没有使用的,在开发的程序中匹配这些接口名,找到哪些接口从没有使用过。将这些没有使用过的接口名保存下来。
代码结构:
结构解析:
1、find.py是文件查找及匹配程序
2、input_files.txt是待匹配内容
文件格式如下:
3、result.txt用于存放查找结果
格式同上
4、text.txt用于测试的文档(可忽略)
实际代码:
find.py
#!/usr/bin/python
#-*-coding:UTF-8-*-
importos,re,datetime
classFind(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
deffind_file(self):
"""
--查找文件,即遍历文件树将查找到的文件放在文件集合中
:return:
"""
#python中的walk方法可以查找到所给路径下的所有文件和文件夹,这里只用文件
forroot,dirs,filesinos.walk(self.root,topdown=True):
fornameinfiles:
self.files.append(os.path.join(root,name))
#print(os.path.join(root,name))
#fornameindirs:
#print(os.path.join(root,name))
@staticmethod
defwalk(self):
"""
--逐一查找,并将结果存入result.txt文件中
:paramself:
:return:
"""
foritem1inself.files:
Find.traverse_file(self,item1)
try:
result=''
foritem3inself.input_files:
result+=item3+'\n'
f=file("./result_files.txt","w")
f.write(result)
f.close()
exceptIOError,msg:
print"Error:",msg
else:
print"OK"
@staticmethod
deftraverse_file(self,file_path):
"""
--遍历文件,匹配字符串
:return:
"""
f=file(file_path,"r")
file_content=f.read()
f.close()
input_files=[]
foritem2inself.input_files:
ifitem2:
#正则匹配,不区分大小写
searchObj=re.search(r'(.*)'+item2+'.*',file_content,re.M|re.I)
ifsearchObj:
continue
else:
input_files.append(item2)
self.input_files=input_files
if__name__=="__main__":
printdatetime.datetime.now()
findObj=Find('F:\\projects',"./input_files.txt")
findObj.find_file(findObj)
findObj.walk(findObj)
printdatetime.datetime.now()
以上这篇python文件查找及内容匹配方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。