python-glob查找特定文件

发布时间 2023-08-02 20:14:56作者: 贝壳里的星海

python-glob查找特定文件

glob模块可以查找当前脚本目录(相对路径)下或者某一指定目录(绝对路径)符合特定规则的文件路径名

glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。

只用到三个匹配符

*  通配符:匹配0个或多个字符;

?  单个字符通配符:匹配单个字符;

[]  字符范围:匹配指定范围内的字符,如:[0-9]匹配数字。
通配符 功能
* 匹配0或多个字符
** 匹配所有文件,目录,子目录和子目录里面的文件
匹配一个字符,这里与正则表达式? (正则?匹配前面表达式0次或者1次)
[] 匹配指定范围内的字符,如: [1-9]匹配1至9内的字符
[!] 匹配不在指定范围内的字符

glob.glob

返回所有匹配的文件路径列表

只有一个参数 pathname :定义了文件路径匹配规则;可以是绝对路径,可以是相对路径

import glob

#获取指定目录下的所有图片
print (glob.glob(r"/home/qiaoyunhao/*/*.jpg"))#加上r让字符串'/'不产生转义

#获取上级目录的所有.py文件
print (glob.glob(r'../*.py')) #相对路径

glob.iglob

获取一个生成器对象,使用它可以逐个获取匹配的文件路径名。

与 glob.glob()的区别: glob.glob()同时获取所有的匹配路径;而 glob.iglob()一次只获取一个匹配路径
import glob
#父目录中的.py文件
f = glob.iglob(r'../*.py')

print(type(f))   # <class 'generator'>
print (f) #<generator object iglob at 0x00B9FF80>
for py in f:
    print (py)

案例

当前路径下所有py文件

for fname in glob.glob("**/*.py",recursive=True):
    print(fname)

当前路径文件tmp下py文件

for fname in glob.glob("./tmp/*.py"):
    print(fname)