Python 带regex的os.walk

Python 带regex的os.walk,python,regex,os.walk,Python,Regex,Os.walk,我想得到一个适用于我的正则表达式的文件列表。我想我应该使用os.walk,但是我如何将它与regex一起使用呢 谢谢。如果您的正则表达式可以翻译成shell表达式,例如foo/*.txt,那么您可以使用 我不知道stdlib中有什么东西实现了这一点,但编写代码并不困难: import os, os.path def iter_matching(dirpath, regexp): """Generator yielding all files under `dirpath` whose

我想得到一个适用于我的正则表达式的文件列表。我想我应该使用os.walk,但是我如何将它与regex一起使用呢


谢谢。

如果您的正则表达式可以翻译成shell表达式,例如
foo/*.txt
,那么您可以使用


我不知道stdlib中有什么东西实现了这一点,但编写代码并不困难:

import os, os.path

def iter_matching(dirpath, regexp):
    """Generator yielding all files under `dirpath` whose absolute path
       matches the regular expression `regexp`.
       Usage:

           >>> for filename in iter_matching('/', r'/home.*\.bak'):
           ....    # do something
    """
    for dir_, dirnames, filenames in os.walk(dirpath):
        for filename in filenames:
            abspath = os.path.join(dir_, filename)
            if regexp.match(abspath):
                yield abspath
或更一般的:

import os, os.path

def filter_filenames(dirpath, predicate):
    """Usage:

           >>> for filename in filter_filenames('/', re.compile(r'/home.*\.bak').match):
           ....    # do something
    """
    for dir_, dirnames, filenames in os.walk(dirpath):
        for filename in filenames:
            abspath = os.path.join(dir_, filename)
            if predicate(abspath):
                yield abspath

请发布一些您尝试使用的代码。请发布您建议的解决方案,包括您收到的任何错误消息。这不是
www.do-my-job-for-me.com
import os, os.path

def filter_filenames(dirpath, predicate):
    """Usage:

           >>> for filename in filter_filenames('/', re.compile(r'/home.*\.bak').match):
           ....    # do something
    """
    for dir_, dirnames, filenames in os.walk(dirpath):
        for filename in filenames:
            abspath = os.path.join(dir_, filename)
            if predicate(abspath):
                yield abspath