我想获取适用于我拥有的正则表达式的文件列表。我想我应该使用 os.walk,但是我如何将它与正则表达式一起使用?
Thanks.
我不知道 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)