python高效使用14---glob标准库的用法

当查找文件夹中的文件的时候,使用glob标准库,比使用os.listdir()并且自己判断是否匹配的方式更加高效和优雅。

glob 是 Python 标准库中的一个模块,主要用于查找符合特定模式的文件路径。它提供了文件路径的模式匹配功能,可以用来查找符合特定通配符模式的文件名。

glob 模块的主要功能是基于 Unix shell 风格的路径匹配规则来查找文件,这些规则包括:

  • * 匹配任意个数的字符(包括空字符)。
  • ? 匹配单个字符。
  • [abc] 匹配方括号中列出的任意一个字符。

使用方法

1. 导入 glob 模块

import glob

2. 常用函数:glob.glob()

这个函数返回一个符合指定模式的文件名列表。

import glob

# 匹配当前目录下的所有 `.txt` 文件
files = glob.glob("*.txt")
print(files)

示例解释:

假设当前目录中有 file1.txt 和 file2.txt,执行上面的代码后输出将是:

['file1.txt', 'file2.txt']

3. 使用通配符 * 和 ?

  • *:匹配任意数量的字符。
  • ?:匹配单个字符。
import glob

# 匹配以 `data` 开头、以 `.csv` 结尾的所有文件
csv_files = glob.glob("data*.csv")
print(csv_files)

# 匹配文件名中第三个字符为 `a` 的 `.txt` 文件
txt_files = glob.glob("??a*.txt")
print(txt_files)

4. 递归查找:glob.glob() + recursive=True

通过设置 recursive=True,可以递归地查找子目录中的文件。

import glob

# 递归查找所有目录及子目录下的 `.py` 文件
python_files = glob.glob("**/*.py", recursive=True)
print(python_files)

5. 使用 glob.iglob()

glob.iglob() 与 glob.glob() 类似,但它返回的是一个迭代器,而不是直接返回文件列表。这在处理大量文件时可能会更高效,因为它不会一次性把所有文件加载到内存中。

import glob

# 使用 iglob 返回迭代器,逐个遍历 .txt 文件
for file in glob.iglob("*.txt"):
    print(file)

6. 匹配指定路径下的文件

可以使用绝对路径或相对路径来查找指定目录下的文件。

import glob

# 查找 /home/user 目录下的所有 `.log` 文件
log_files = glob.glob("/home/user/*.log")
print(log_files)

7. 组合使用通配符

可以组合使用多个通配符来更精确地匹配文件。

import glob

# 匹配目录下包含数字且以 .txt 结尾的文件
files = glob.glob("*[0-9]*.txt")
print(files)

总结

  • glob.glob(pattern):根据模式返回文件列表。
  • glob.iglob(pattern):返回一个迭代器,更节省内存。
  • 通配符 *? 和 [] 用来匹配文件名中的任意字符。
  • recursive=True 可以递归地查找子目录中的文件。

glob 是一个非常实用的模块,特别适合查找符合一定模式的文件集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云金杞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值