Python 3.5+
从Python版本3.5开始,glob模块支持该"**"指令(仅当您传递recursive标志时才会解析该指令):
import glob
for filename in glob.iglob('src/**/*.c', recursive=True):
print(filename)
如果你需要一个列表,只需使用glob.glob而不是glob.iglob。
import fnmatch
import os
matches = []
for root, dirnames, filenames in os.walk('src'):
for filename in fnmatch.filter(filenames, '*.c'):
matches.append(os.path.join(root, filename))
匹配以点(。)开头的文件的情况; 像当前目录中的文件或基于Unix的系统上的隐藏文件,请使用os.walk下面的解决方案。
Python 2.2到3.4
对于较早的Python版本,从Python 2.2开始,使用os.walk递归遍历一个目录并fnmatch.filter匹配一个简单的表达式:
Python 2.1及更早的版本
对于更老的Python版本,使用glob.glob每个文件名而不是fnmatch.filter。