python的glob.glob()函数递归匹配文件或目录
python自带的glob模块用于查找符合特定规则的文件路径名。这个模块主要提供了一个函数glob(),它返回一个列表,包含了所有匹配特定模式的文件路径。跟pathlib.Path.glob是类似的功能,两者之间也有明显的区别。
glob.glob()函数介绍
使用时先导入glob模块:
import glob
glog.glob函数源码如下:适配python3.12版本,不同的版本参数可能不同。
参数介绍:
1)pathname:一个字符串,表示要匹配的文件模式。
2)root_dir:默认为None,使用当前目录;传入其他目录,比如“D:”表示在传入的目录中查找。
3)recursive:默认为False,参数为True和pathname包含**时,会递归地查找所有子目录中的文件。
4)Include_hidden:默认为False,参数为True时会查找隐藏的目录。
举例:
1)查找某个目录中的python文件
for file in glob.glob('*.py',root_dir='D:\Python37\Scripts'):
print(file)
2)递归查找某个目录及所有子目录中的python文件
for file in glob.glob('**/*.py',root_dir='D:\Python37\Scripts',
recursive=True):
print(file)
3)查找某个目录中的隐藏的所有文件
for file in glob.glob('*',root_dir='D:\Python37\Scripts',
include_hidden=True):
print(file)
Path.glob(pattern)函数
返回与给定模式匹配的所有文件路径对象;这个方法返回的是一个生成器,可通过for循环访问。
参数pattern解释:pattern是一个字符串,用于指定要搜索的文件模式,有些类似于re模块对应的正则表达式,支持像通配符*,代表单个字符的?等。
以下是一些pattern参数的示例:
测试代码:先初始化Path类,传入参数Path.cwd(),表示当前路径。
1)使用glob函数匹配特定的python文件。
path_ins= Path(Path.cwd())
for i in path_ins.glob('*.py'):
print(f'路径:{i}')
2)使用glob函数匹配当前目录下所有的文件和目录。
path_ins= Path(Path.cwd())
for i in path_ins.glob('*'):
print(f'路径:{i}')
3)使用glob函数匹配当前目录及所有子目录下的所有文件和文件夹。
path_ins= Path(Path.cwd())
for i in path_ins.glob('**'):
print(f'路径:{i}')
递归查找某个目录下的大文件
from pathlib import Path
def get_file_size(dir,n=10):
"""
:param dir: 目录
:param n: 打印排名后文件的数量
:return:
"""
file_dict = {}
#初始化
path_ins= Path(dir)
for file in path_ins.rglob('*'):
if file.is_file():
#将文件作为key 文件大小作为value
file_dict[str(file)] = file.stat()[6]
#按照大小倒序排名
newfile_dict = dict(sorted(file_dict.items(),key=lambda x:x[1],reverse=True))
#打印前n个文件
num = 0
for key,value in newfile_dict.items():
num+= 1
print(key,value)
if num >= n:
break
get_file_size('D:\迅雷下载')
执行后可以打印文件夹中的前10个大文件:
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
—–指水滴不断地滴,可以滴穿石头;
—–比喻坚持不懈,集细微的力量也能成就难能的功劳。
—-感谢读者的阅读和学习,谢谢大家。
作者:科雷learning