文章目录
- 功能:匹配任意数量(包括零个)的任意字符。 示例: import glob # 匹配当前目录下所有扩展名为 .txt 的文件 txt_files = glob.glob(‘*.txt’) for file in txt_files: print(file) 上述代码中,*.txt 表示匹配当前目录下文件名任意,但扩展名为 .txt 的所有文件。
- 功能:匹配单个任意字符。 示例: import glob # 匹配当前目录下文件名只有一个字符且扩展名为 .py 的文件 single_char_py_files = glob.glob(‘?.py’) for file in single_char_py_files: print(file) 这里,?.py 表示文件名只有一个字符,扩展名为 .py 的文件。
- 功能:匹配方括号内指定的任意一个字符。 示例: import glob # 匹配当前目录下文件名以 a 或 b 开头且扩展名为 .txt 的文件 ab_txt_files = glob.glob(‘[ab]*.txt’) for file in ab_txt_files: print(file) [ab]*.txt 表示文件名以 a 或 b 开头,扩展名为 .txt 的文件。
- 功能:在路径中使用 ** 表示递归匹配目录。在 Python 3.5 及以上版本支持。 示例: import glob # 递归匹配当前目录及其子目录下所有扩展名为 .txt 的文件 all_txt_files = glob.glob(‘**/*.txt’, recursive=True) for file in all_txt_files: print(file) **/*.txt 结合 recursive=True 会递归查找当前目录及其所有子目录下的 .txt 文件。
- 可以使用 glob 模块查找符合特定模式的文件,然后对这些文件进行批量处理,如批量重命名、批量读取文件内容等。 import glob # 批量重命名当前目录下所有 .txt 文件 txt_files = glob.glob(‘*.txt’) for file in txt_files: new_name = file.replace(‘.txt’, ‘_new.txt’) import os os.rename(file, new_name)
- 在进行数据收集时,可能需要从多个文件中读取数据。可以使用 glob 模块查找相关文件,然后读取数据。 import glob # 读取当前目录及其子目录下所有 .csv 文件的数据 csv_files = glob.glob(‘**/*.csv’, recursive=True) for file in csv_files: with open(file, ‘r’) as f: data = f.read() print(f”Data from {file}: {data[:100]}…”)
目录
- 一、glob 模块概述
- 二、通配符规则
- (一)* 通配符
- (二)? 通配符
- (三)[] 通配符
- (四)** 通配符(递归匹配)
- 三、glob 函数
- (一)glob.glob(pathname, *, recursive=False)
- 四、iglob 函数
- (一)glob.iglob(pathname, *, recursive=False)
- 五、glob 与其他文件查找方式的对比
- 六、应用场景
- (一)批量文件处理
- (二)数据收集
- 文章总结
glob 模块可根据指定的模式来查找文件和目录,它支持使用通配符进行模糊匹配。主要通过 glob 和 iglob 两个函数来实现文件路径的模式匹配,能处理简单的文件名模式,如 *.txt 可匹配所有扩展名为 .txt 的文件。
- 功能:匹配任意数量(包括零个)的任意字符。
- 示例:
import glob
# 匹配当前目录下所有扩展名为 .txt 的文件
txt_files = glob.glob('*.txt')
for file in txt_files:
print(file)
上述代码中,*.txt 表示匹配当前目录下文件名任意,但扩展名为 .txt 的所有文件。
- 功能:匹配单个任意字符。
- 示例:
import glob
# 匹配当前目录下文件名只有一个字符且扩展名为 .py 的文件
single_char_py_files = glob.glob('?.py')
for file in single_char_py_files:
print(file)
这里,?.py 表示文件名只有一个字符,扩展名为 .py 的文件。
-
功能:匹配方括号内指定的任意一个字符。
-
示例:
import glob
# 匹配当前目录下文件名以 a 或 b 开头且扩展名为 .txt 的文件
ab_txt_files = glob.glob('[ab]*.txt')
for file in ab_txt_files:
print(file)
功能:匹配方括号内指定的任意一个字符。
示例:
[ab]*.txt 表示文件名以 a 或 b 开头,扩展名为 .txt 的文件。
- 功能:在路径中使用
** 表示递归匹配目录。在 Python 3.5 及以上版本支持。
- 示例:
import glob
# 递归匹配当前目录及其子目录下所有扩展名为 .txt 的文件
all_txt_files = glob.glob('**/*.txt', recursive=True)
for file in all_txt_files:
print(file)
** 表示递归匹配目录。在 Python 3.5 及以上版本支持。**/*.txt 结合 recursive=True 会递归查找当前目录及其所有子目录下的 .txt 文件。
-
功能:返回一个符合指定模式的文件和目录路径列表。
-
参数:
pathname:要匹配的路径模式。
recursive:是否进行递归匹配,默认为 False。当设置为 True 时,支持使用 ** 通配符进行递归查找。
-
示例:
import glob
# 匹配当前目录及其子目录下所有以 test 开头的文件
test_files = glob.glob('**/test*', recursive=True)
for file in test_files:
print(file)
功能:返回一个符合指定模式的文件和目录路径列表。
参数:
pathname:要匹配的路径模式。recursive:是否进行递归匹配,默认为False。当设置为True时,支持使用**通配符进行递归查找。
示例:
- 功能:返回一个迭代器,该迭代器会逐个产生符合指定模式的文件和目录路径。
- 参数:与
glob.glob 相同。
- 示例:
import glob
# 使用 iglob 迭代匹配当前目录下所有 .py 文件
py_files_iter = glob.iglob('*.py')
for file in py_files_iter:
print(file)
glob.glob 相同。iglob 适合处理大量匹配结果的情况,因为它不会一次性生成所有匹配结果,而是逐个产生,节省内存。
| 查找方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
glob 模块 |
使用简单,支持通配符匹配,能快速查找符合模式的文件和目录。 | 模式匹配功能相对简单,不支持复杂的正则表达式匹配。 | 简单的文件和目录查找,如按扩展名、文件名前缀等查找。 |
os.walk 函数 |
可以递归遍历目录树,能详细控制遍历过程。 | 需要手动编写代码进行文件筛选,使用相对复杂。 | 需要对目录树进行深度遍历和复杂筛选的场景。 |
re 模块(正则表达式) |
支持复杂的模式匹配,功能强大。 | 学习成本较高,代码相对复杂。 | 需要进行复杂文件名模式匹配的场景。 |
可以使用 glob 模块查找符合特定模式的文件,然后对这些文件进行批量处理,如批量重命名、批量读取文件内容等。
import glob
# 批量重命名当前目录下所有 .txt 文件
txt_files = glob.glob('*.txt')
for file in txt_files:
new_name = file.replace('.txt', '_new.txt')
import os
os.rename(file, new_name)
在进行数据收集时,可能需要从多个文件中读取数据。可以使用 glob 模块查找相关文件,然后读取数据。
import glob
# 读取当前目录及其子目录下所有 .csv 文件的数据
csv_files = glob.glob('**/*.csv', recursive=True)
for file in csv_files:
with open(file, 'r') as f:
data = f.read()
print(f"Data from {file}: {data[:100]}...")
glob 模块为 Python 开发者提供了一种便捷的文件和目录查找方式,通过使用 Unix 风格的通配符规则,能快速定位符合特定模式的文件和目录。glob.glob 函数返回匹配结果列表,glob.iglob 函数返回迭代器,适用于不同的应用场景。在简单的文件查找和批量处理任务中,glob 模块是一个非常实用的工具。
到此这篇关于Python文件路径模式匹配glob模块使用的文章就介绍到这了,更多相关Python文件路径模式匹配glob模块内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- 简单掌握Python中glob模块查找文件路径的用法
- Python模块glob函数示例详解教程
- Python 专题六 局部变量、全局变量global、导入模块变量
- 在Python中使用glob模块查找文件路径的方法
- python通配符之glob模块的使用详解
- python里glob模块知识点总结
- Python文件处理、os模块、glob模块
- python用glob模块匹配路径的方法详解