2
私は正規表現に適用されるファイルのリストを取得したいと思います。私はos.walkを使うべきだと思いますが、どうすれば正規表現でそれを使うことができますか?os.walk with regex
ありがとうございました。
私は正規表現に適用されるファイルのリストを取得したいと思います。私はos.walkを使うべきだと思いますが、どうすれば正規表現でそれを使うことができますか?os.walk with regex
ありがとうございました。
正規表現をfoo/*.txt
などのシェル式に変換できる場合は、glob
を使用できます。
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
:
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」ではありません。 –