python在文件中查找指定数据,python读取文件查找关键字
Linux和Windows系统都有基于文件名的过滤和搜索功能。但是如果你想找一些文件关于一些文件的指定内容,表面上看起来好像没有这样的功能。这时候你可以通过Python来实现这个功能。跟边肖学吧。
00-1010文件搜索操作glob简介glob的基本用法查找指定文件根据文件内容查找文件本章将学习文件搜索操作。众所周知,Linux和Windows系统都有基于文件名的过滤和搜索功能。但是如果想找一些文件关于一些文件的指定内容,Linux或者Windows工具上好像没有这个功能。这个时候可以用Python来实现这个功能。通过本章的学习,你可以学习如何用Python实现这个操作。
目录
文件查找操作
Glob package是一个可以快速找到文件夹中内容的包,我们可以通过模糊搜索找到我们想要的。
glob 的介绍
导入包和模块
从全球导入全球
施用方式
Glob(任意目录)
返回内容:
指定路径下的内容列表,不存在的路径返回空列表。
代码示例如下:
#编码:utf-8
导入操作系统
从全球导入全球
target=os.getcwd()
结果=全局(目标)
Print(result) #打印出当前路径的文件夹。
result=glob(目标/* )
Print(result) #打印出当前路径下文件夹中的所有文件。
result=glob(target /*)。py’)
Print(result) #打印出当前路径文件夹下所有以 py 结尾的文件。
result=glob(target /*)。zip’)
Print(result) #打印出当前路径文件夹下所有以 zip 结尾的文件。
result=glob(target /filetest* )
Print(result) # #打印出当前路径文件夹下以“filetest”开头的所有文件
运行结果如下:
glob 的基本使用
已知条件:
您要查找的文件名已知,但目录位置未知。
实现方法:
使用“glob”从顶层目录开始搜索,并使用递归模式继续搜索,直到找到为止。
代码示例如下:
#编码:utf-8
导入全球
获取当前路径下的所有内容。
确定每个内容的类型(文件夹或文件)
如果是文件夹,继续递归搜索。
path=glob . OS . path . join(glob . OS . getcwd(), *) #获取当前文件夹中的所有内容
# glob模块实际上包含了 os 模块。
Final_result=[] #定义一个空列表来存储search()函数找到的内容。
DEF search (path,target) 3360 #定义了search()函数,传入 path 文件路径和 target 来查找目标文件。
结果=glob.glob(路径)
For data in result: # for循环确定递归找到的内容是文件夹还是文件。
if glob.os.path.i
sdir(data): # 若是文件夹,继续将该文件夹的路径传给 search() 函数继续递归查找
_path = glob.os.path.join(data, *)
search(_path, target)
else: # 若是文件,则将该查询到的文件所在路径插入 final_result 空列表
if target in data:
final_result.append(data)
return final_result
if __name__ == __main__:
result = search(path, target=filetest.py)
print(result)
运行结果如下:
基于文件内容查找文件
接下来我们看一下查找指定内容的文件:
已知条件:
文件中包含有某些关键字,但是不知道文件名和文件所在路径
实现方法:
利用 "glob" 从最上级目录开始查找,利用递归模式,不断的查找。如果是文件夹则进入继续查找,是文件则读取,判断是否包含该内容,返回该内容的文件名以及所在路径。
其实,基于文件内容查找文件实现的方式大体与上文的查找指定文件大体相似,只不过加入了读取文件的判断罢了。
代码示例如下:
# coding:utf-8import glob
"""
获取当前路径下所有内容
判断每个内容的类型(文件夹还是文件)
若是文件夹则继续递归查找
"""
path = glob.os.path.join(glob.os.getcwd(), *test04) # 因为下文捕获不可读文件格式太多,所以这里直接指定了 "test04" 路径
final_result = [] # 定义一个空列表,用以存储 search() 函数查到的内容
def search(path, target): # 定义 search() 函数,传入 "path" 文件路径, "target" 要查找的目标文件
result = glob.glob(path)
for data in result: # for 循环判断递归查到的内容是文件夹还是文件
if glob.os.path.isdir(data): # 若是文件夹,继续将该文件夹的路径传给 search() 函数继续递归查找
_path = glob.os.path.join(data, *)
search(_path, target)
else: # 若是文件,则将该查询到的文件所在路径插入 final_result 空列表
f = open(data, r) # 利用 open() 函数读取文件,并通过 try...except... 捕获不可读的文件格式(.zip 格式)
try:
content = f.read()
if target in content:
final_result.append(data)
except:
print(这是不可读文件格式的文件的所在路径:{} .format(data))
continue
finally:
f.close()
return final_result
if __name__ == __main__:
result = search(path, target=测试文件)
print(result)
运行结果如下:
到此这篇关于Python基于文件内容实现查找文件功能的文章就介绍到这了,更多相关Python文件查找内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。