Python中glob2模块是什么?glob的作用及使用场景问询
关于Python中glob与glob2的解惑
嘿,我来帮你理清这两个模块的区别,还有你这段代码的实际作用~
1. Python标准库中的glob模块到底是什么?
glob是Python自带的标准库模块,核心功能就是快速查找符合特定通配符规则的文件路径。你可以把它看成是系统文件管理器里“搜索通配符”功能的代码实现——比如你在文件夹里搜*.txt能找到所有文本文件,用glob就能在代码里干同样的事,不用自己写复杂的目录遍历和字符串匹配逻辑。
它常用的场景包括:
- 批量处理同类型文件(比如所有
.csv数据文件) - 快速筛选符合命名规则的文件(比如
report_202*.pdf) - 避免手动写
os.listdir()再加一堆判断条件,让代码更简洁
2. 那glob2又是啥?
glob2是一个第三方扩展库,是对标准glob模块的增强版:
- 它支持更复杂的递归匹配(比如用
**/*.txt就能匹配当前目录及所有子目录下的.txt文件) - 在Python 3.5之前,标准
glob没有递归匹配的功能,所以当时很多人会用glob2来实现深层文件查找;不过现在Python 3.5+的标准glob已经支持recursive=True参数(比如glob.glob("**/*.txt", recursive=True)),所以如果你的Python版本较新,其实不用额外装glob2也能实现同样的效果。
3. 你的代码到底在做什么?
我来拆解一下你贴的这段代码:
import glob2 from datetime import datetime filenames = glob2.glob("*.txt") with open(datetime.now().strftime("%Y-%m-%d-%H-%M-%S-%f")+".txt", 'w') as file: for filename in filenames: with open(filename, "r") as f: file.write(f.read() + "\n")
这段代码的核心作用是:把当前目录下所有.txt文件的内容,合并到一个以当前精确时间命名的新文本文件中。
- 第一行导入
glob2用来匹配文件 - 第二行导入
datetime是为了生成唯一的时间戳文件名(避免覆盖已有文件) glob2.glob("*.txt"):获取当前目录下所有后缀为.txt的文件名列表- 创建一个以
YYYY-MM-DD-HH-MM-SS-ffffff(精确到微秒)命名的新.txt文件 - 遍历每个找到的
.txt文件,读取它的全部内容,写入到新文件里,每个文件内容后加一个换行符分隔
为什么要用这类模块?
简单说就是高效、简洁、不易出错:
- 不用手动遍历目录(比如
os.walk())再筛选文件名,一行glob.glob()就能搞定 - 支持多种通配符规则(
*匹配任意字符、?匹配单个字符、[]匹配指定范围字符),灵活度拉满 - 处理文件路径时会自动适配不同操作系统的路径分隔符(Windows的
\和Linux/macOS的/),不用自己做兼容
内容的提问来源于stack exchange,提问作者user9523824




