欢迎访问宙启技术站
智能推送

Python中glob模块的通配符用法详解

发布时间:2024-01-04 09:25:45

在Python中,可以使用glob模块来进行通配符匹配。glob模块提供了一个简单的接口,可以根据指定的规则获取匹配的文件路径列表。

glob模块支持的通配符有两种:

1. *:匹配任意多个字符(包括0个字符)

2. ?:匹配一个字符

下面是一些具体的用法和示例:

1. 匹配特定文件类型:

import glob

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

输出:

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

2. 匹配特定目录下的文件:

import glob

# 匹配指定目录下的所有文件
all_files = glob.glob("/path/to/dir/*")
print(all_files)

输出:

['/path/to/dir/file1.txt', '/path/to/dir/file2.jpg', '/path/to/dir/file3.py']

3. 匹配指定目录及其子目录下的文件:

import glob

# 匹配指定目录及其子目录下的所有txt文件
txt_files = glob.glob("/path/to/dir/**/*.txt", recursive=True)
print(txt_files)

输出:

['/path/to/dir/file1.txt', '/path/to/dir/subdir/file2.txt', '/path/to/dir/file3.txt']

在上面的示例中,**表示匹配任意级别的子目录。

4. 匹配多个文件类型:

import glob

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

输出:

['file1.txt', 'file2.txt', 'file3.txt', 'script1.py', 'script2.py']

5. 匹配任意字符:

import glob

# 匹配以a开头,以txt结尾,中间有一个任意字符的文件
files = glob.glob("a?*.txt")
print(files)

输出:

['abc.txt', 'axt.txt']

在上面的示例中,?匹配一个字符,所以a?*.txt可以匹配的文件包括"abc.txt"和"axt.txt"。

6. 匹配子目录中的文件:

import glob

# 匹配当前目录下的所有子目录中的txt文件
files = glob.glob("**/*.txt", recursive=True)
print(files)

输出:

['file1.txt', 'subdir/file2.txt', 'subdir2/subsubdir/file3.txt']

在上面的示例中,**表示匹配任意级别的子目录,所以**/*.txt可以匹配当前目录及其子目录中的所有txt文件。

综上所述,glob模块提供了一种方便的方式来进行通配符匹配,可以帮助我们快速获取符合条件的文件列表。