Python glob模块详解:文件匹配与目录创建
本文详细介绍Python中glob模块的使用方法,涵盖*、?、[]等通配符在文件路径匹配中的应用。通过具体代码示例演示如何查找当前目录及子目录文件,并介绍利用os.makedirs实现递归创建目录的功能,帮助开发者高效处理文件搜索与目录管理任务。
glob模块基础与通配符规则
glob模块实例详解
glob模块的主要应用场景是查找符合特定规则的一系列文件名。
作为Python中内容最精简的模块之一,glob模块专注于查找符合特定规则的文件路径。其核心功能依赖于三个匹配符:“*”、“?”和“[]”。
“*”用于匹配0个或多个任意字符。
“?”用于匹配单个任意字符。
“[ ]”用于匹配指定范围内的字符,例如“[0-9]”可匹配任意数字。
假设存在如下示例目录结构。
dir
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir
dir/subdir/subfile.txt
文件匹配实战:当前目录与子目录
匹配所有文件
使用“*”可以匹配任意长度的字符序列。在实际开发中,glob.glob()最为常用,它返回一个包含匹配路径的列表;若需节省内存,也可使用glob.iglob()返回生成器。
import glob
for name in glob.glob('dir/*'):
print name
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir
匹配子目录文件
可以明确指定子目录名称,也可以使用通配符代替子目录名,从而实现不显示指定具体子目录名称的匹配。
print 'Named explicitly:'
for name in glob.glob('dir/subdir/*'):
print '\t', name
print 'Named with wildcard:'
for name in glob.glob('dir/*/*'):
print '\t', name
Named explicitly:
dir/subdir/subfile.txt
Named with wildcard:
dir/subdir/subfile.txt
高级匹配:单字符与区间通配符
单字节通配符匹配
除了“*”之外,“?”用于匹配单个字符。例如,以下代码用于匹配以“file”开头、以“.txt”结尾,且中间仅包含一个任意字符的文件。
for name in glob.glob('dir/file?.txt'):
print name
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
字符区间匹配[0-9]
例如,匹配后缀前为数字的文件。
for name in glob.glob('dir/*[0-9].*'):
print name
dir/file1.txt
dir/file2.txt
参考来源:
官方文档
Python Module of the Week
补充:递归遍历与目录创建
补充知识:Python glob 递归遍历匹配文件;os.makedirs()递归创建目录
Glob递归遍历匹配文件
简约版
在Python中,glob模块用于查找匹配的文件。
常用的匹配规则如下:
* 匹配所有文件
? 匹配一个字符
如果没有找到匹配项,glob.glob(path)将返回一个空列表[]。
from glob import glob
file_path = "/home/lihuiyu/Code/results_S2_W20040/*/*.pth"
print(glob(file_path))
排序版
为了简化工作,我倾向于通过代码解决重复性问题,而非人工处理。
为了保持代码整洁,我追求结果的整齐划一,因此对代码质量有较高要求。
import re
from glob import glob
def atoi(s):
return int(s) if s.isdigit() else s
def natural_keys(text):
return [atoi(c) for c in re.split('(\d+)', text)]
file_path = "/home/lihuiyu/Code/results_S2_W20040/*/*.pth"
file_list = glob(file_path)
file_list.sort(key=natural_keys)
for name in file_list:
print(name)
os.makedirs()递归创建目录
os.mkdir()用于创建指定的目录,但如果其上一级目录不存在,则创建会失败。
os.makedirs()实现了递归创建目录的功能,即使中间层级目录不存在也能自动创建。
以上关于Python glob模块匹配文件的操作内容即为分享的全部,希望能为大家提供参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













