匹配文件名的Python正则表达式,使用os.walk()获取文件名

1 投票
1 回答
2002 浏览
提问于 2025-04-19 06:50

我正在使用 os.walk() 来获取文件名。我需要做的是创建一个列表,里面包含符合以下模式的文件名:

如果 '*',那么会匹配所有文件。

如果 'h*',那么会匹配所有以 h 开头的文件。

如果 '*h',那么会匹配所有以 h 结尾的文件。

如果 '*h*',那么会匹配所有包含 h 的文件。

如果 [h-w]*,那么会匹配集合中的任意一个字符,包括集合的否定 [^h-w]。

我对正则表达式还不太熟悉,创建一个 if 语句来处理这个问题时遇到了困难。有人能给我解释一下吗(最好能附带代码示例)?谢谢。

1 个回答

1

我试了 fnmatch,效果非常好,特别感谢 Charles Duffy 的帮助。以下是我的代码:

for dp, dn, filenames in os.walk(path):
    for ff in filenames:
        if fnmatch.fnmatch(ff, 'My patterns here'):
             list.append(os.path.join(dp, ff))

撰写回答