如何使用Python在文件夹中搜索与正则表达式匹配的文件名?
我在写一个函数的时候遇到了一些困难,这个函数需要在一个文件夹里搜索一个符合特定规则的文件。这个规则是我用're.compile'这个工具编写的。我的问题是:我该怎么在一个文件夹里(我打算用os.walk这个方法)搜索一个符合特定规则的文件呢?如果能给个例子就太好了,非常感谢!
3 个回答
1
如果你要匹配的模式比较简单,可以用文件系统的通配符来处理,我建议你看看glob模块,它就是为了这个目的而存在的。
2
先了解一下RE模式中的
match
方法。查看所有关于如何在我的Python(2.5版本)脚本中将特定文件扩展名的文件复制到文件夹的回答。
选择一个使用了
fnmatch
的答案。然后把fnmatch
替换成re.match
。这个过程需要仔细思考,不是简单的复制粘贴。最后,提出具体的问题。
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