当我们需要对文件名进行批量处理时,常常使用文件名匹配模式,glob是Python标准库提供的文件名匹配模块,可以通过指定特定的文件名模式来返回符合条件的文件列表。
glob的使用
glob主要包含了三个函数:glob、iglob以及glob2。
- glob函数:列出符合特定规则的文件或目录,返回一个列表。
- iglob函数:功能与glob函数类似,但是返回的是一个迭代器,可以逐个读取匹配到的文件,适合用于处理较大的文件列表。但是,它不能像glob一样直接进行排序,如果需要排序的话,需要自己编写代码进行排序。
- glb函数:返回所有符合条件的文件路径,可以匹配整个目录或子目录树。
glob用法示例
import glob
# 列出当前目录下所有txt文件
txt_files = glob.glob('*.txt')
print(txt_files)
输出结果为当前目录下所有的txt文件列表。
['test1.txt', 'test2.txt', 'test3.txt']
iglob用法示例
import glob
# 列出当前目录及子目录下所有txt文件
txt_files = glob.iglob('**/*.txt', recursive=True)
for file in txt_files:
print(file)
输出结果为当前目录及子目录下所有的txt文件列表。
test/test1.txt
test1.txt
test/test2.txt
test2.txt
test/test3.txt
test3.txt
glob2用法示例
from glob2 import glob
# 列出当前目录及子目录下所有txt文件
txt_files = glob('**/*.txt', recursive=True)
print(txt_files)
输出结果为当前目录及子目录下所有的txt文件列表。
['test/test1.txt', 'test1.txt', 'test/test2.txt', 'test2.txt', 'test/test3.txt', 'test3.txt']
glob模式匹配语法
glob模式匹配语法和正则表达式略有不同,下面是glob模式匹配的一些语法。
匹配单个字符:
- ?:匹配任意一个字符。
- [abc]:匹配包含在括号内的任意一个字符。
匹配多个字符:
- *:匹配任意个数的任意字符。
- [0-9]:匹配数字0到9中的任意一个。
匹配目录:
- /:分隔符。
匹配特定文件:
- [!.txt]:不匹配以txt结尾的文件。
- [*.txt]:匹配以txt结尾的文件。
注意事项
- glob模块只能匹配符合规则的文件名或目录名,无法匹配文件内容,如果需要匹配文件内容,需要使用其它工具库。
- Windows系统和Linux系统下的路径分隔符不同,在使用时需要根据不同的系统选择合适的分隔符。
- 使用glb函数时要特别注意,如果目录下的文件非常多,可能会导致程序崩溃或内存溢出的问题,所以在使用时需要小心谨慎。
通过本教程,相信您对于Python3标准库glob文件名模式匹配的问题有了一定的了解和掌握。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3标准库glob文件名模式匹配的问题 - Python技术站