glob 模式
在计算机编程中,特别是类 Unix 环境,glob 模式通过通配符来匹配文件名。例如:Unix 命令,将所有以扩展名为 .txt
的文件从当前目录拷贝到 textfiles
目录。
这里 *
是一个匹配任意数量字符基本通配符,*.txt 就表示一个 glob 模式。另一个通用的通配符是 ?
,它表示任意一个字符。
python
import glob
# 获取当前目录下所有的内容
print(glob.glob('*'))
# 获取当前目录下所有的 .zip 文件
print(glob.glob('*.zip'))
# 获取父级目录下所有的 .py 文件的路径
print(glob.glob('../*/*.py'))
最常用的通配符
通配符 | 描述 | 例子 | 匹配 | 不匹配 |
---|---|---|---|---|
* | 匹配任意数量的字符包括空字符 | Law* | Law, Laws, or Lawyer | |
*Law* | Law, GrokLaw, or Lawyer. | |||
? | 匹配任意一个字符 | ?at | Cat, cat, Bat or bat | at |
[abc] | 匹配任意一个包含的字符 | [CB]at | Cat or Bat | cat or bat |
[a-z] | 匹配任意一个给定范围的字符 | Letter[0-9] | Letter0, Letter1 etc. | Letters or Letter |
在Linux和POSIX系统中[…]有以下两个扩展:
通配符 | 描述 | 例子 | 匹配 | 不匹配 |
---|---|---|---|---|
[!abc] | 不匹配任意一个包含的字符 | [!C]at | Bat, bat, or cat | Cat |
[!a-z] | 不匹配任意一个给定范围的字符 | Letter[!3-5] | Letter1, Letter2 etc. | Letter3, Letter4 or Letter5 |
与正则的比较:
Glob 的通配符 | 等价正则的表达式 |
---|---|
? | . |
* | .* |