我在编写一个函数时遇到一些困难,该函数将在目录中搜索与特定正则表达式匹配的文件(我使用're.compile'编译)。所以我的问题是:如何搜索目录(我计划使用os.walk)来查找与特定正则表达式匹配的文件?非常感谢一个例子。提前致谢。
答案 0 :(得分:10)
这将找到以两位数字开头并以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
答案 1 :(得分:2)
了解RE模式的match
方法。
阅读How do I copy files with specific file extension to a folder in my python (version 2.5) script的所有答案?
选择一个使用fnmatch
的人。将fnmatch
替换为re.match
。这需要仔细考虑。这不是剪切和粘贴。
然后,提出具体问题。
答案 2 :(得分:1)
如果你必须匹配的模式很简单,可以使用文件系统通配符,我建议你看一下glob模块,它存在于这个目的。
答案 3 :(得分:1)
其中一位Stackoverflow创始人是JGSoft RegexBuddy的忠实粉丝。当我在工作中编写一个简单的文件移动脚本时,我一时兴起,并且使用您选择的语言很容易为工作生成最好的正则表达式。如果您在开发正则表达式本身时遇到问题,这是检查逻辑的好工具。我想我现在也是一个大粉丝。