概述
glob是python自己带的一个文件操作相关模块,查找文件目录和文件,类似于Windows下的文件搜索。
glob模块会将查找到的文件目录或文件的搜索结果返回到一个列表中。
支持的通配符:
支持:*,?,[],这三个通配符
- *代表匹配0个或多个字符
- ?代表匹配任意一个字符
- []匹配指定范围内的字符
- 如:
- [0-9]匹配所有数字
- [a-z]匹配所有字母
- [1,2,3]仅匹配1,2,3三个数字
- [!1,2,3]不匹配1,2,3三个数字
导入模块
1、import glob #导入整个glob模块
2、from glob import golb #从glob模块导入glob函数
两个主要方法:
glob方法和iglob方法
glob方法:
返回所有匹配的文件路径列表(list);该方法需要一个参数用来指定匹配的路径字符串(字符串可以为绝对路径也可以为相对路径),其返回的文件名只包括当前目录里的文件名,不包括子文件夹里的文件。
实例
# -*- coding: utf-8 -*-
import glob #导入整个glob模块
# 获取当前目录下所有py文件
print(glob.glob('./*.py'))
print(glob.glob('*.py')) # 不写路径也代表当前目录
# 获取C盘下的所有txt文件
print(glob.glob(r'c:*.txt'))
# 获取上一级目录所有py文件
print(glob.glob('../*.py'))
# 获取当前目录下文件名是数字的py文件
print(glob.glob('./[0-9].py')
iglob方法:
获取一个迭代器( iterator )对象,使用它可以逐个获取匹配的文件路径名。与glob.glob()的区别是:glob.glob()可同时获取所有的匹配路径,而glob.iglob()一次只能获取一个匹配路径。
实例
# -*- coding: utf-8 -*-
import glob
# 获取上一级目录.py文件路径名
f = glob.iglob(r'../*.py')
print(f) # <generator object _iglob at 0x000001F9F972CC10>
# 打印每个py文件路径名
for py_path in f:
print(py_path)
参数recursive
glob方法和iglob方法都有一个参数:recursive默认为False
如果为True,则会搜索出目录下所有子目录和对应的文件。
例如:
# 找出当前目录以及子目录所有py文件
# ** 用于表示任意层文件或文件夹
print(glob.glob('**/*.py', recursive=True))
# 找出上一级目录以及子目录所有py文件
# ** 用于表示任意层文件或文件夹
print(glob.glob('../**/*.py', recursive=True))