如何使用Python在文件夹中搜索与正则表达式匹配的文件名?

3 投票
3 回答
5637 浏览
提问于 2025-04-11 19:18

我在写一个函数的时候遇到了一些困难,这个函数需要在一个文件夹里搜索一个符合特定规则的文件。这个规则是我用're.compile'这个工具编写的。我的问题是:我该怎么在一个文件夹里(我打算用os.walk这个方法)搜索一个符合特定规则的文件呢?如果能给个例子就太好了,非常感谢!

3 个回答

1

如果你要匹配的模式比较简单,可以用文件系统的通配符来处理,我建议你看看glob模块,它就是为了这个目的而存在的。

2
  1. 先了解一下RE模式中的match方法。

  2. 查看所有关于如何在我的Python(2.5版本)脚本中将特定文件扩展名的文件复制到文件夹的回答。

  3. 选择一个使用了fnmatch的答案。然后把fnmatch替换成re.match。这个过程需要仔细思考,不是简单的复制粘贴。

  4. 最后,提出具体的问题。

11

这段代码会找到所有以两个数字开头并且以gif结尾的文件。如果你想的话,可以把这些文件放到一个全局的列表里。

import re
import os
r = re.compile(r'\d{2}.+gif$')
for root, dirs, files in os.walk('/home/vinko'):
  l = [os.path.join(root,x) for x in files if r.match(x)]
  if l: print l #Or append to a global list, whatever

撰写回答