3

Python で特定のサブディレクトリを検索するオプションを探しています。

たとえば、次のようなディレクトリ構造です。

some_files/
     common/
     2009/
     2010/
     2011/
     ...

2 で始まるサブディレクトリのみを検索したいので、「some_files/2*」のようなものにする必要があります。glob.glob と os.walk() を使用して可能に違いないと思いますが、動作させることができません。

今私は使用します:

files = [os.path.join(dirpath, f)
                for dirpath, dirnames, files in os.walk(d)
                for f in files if f.endswith(ext)]

しかし、これは特定のニーズには合いません。

誰かが私を助けてくれますか?

4

2 に答える 2

2

dirpath で glob を使用して、一致するディレクトリを見つけることができます。

from glob import iglob
import os

files = []
ext = "py"
for dirpath, dirnames, file in os.walk(path):
    match = next(iglob(os.path.join(dirpath, "2*")),"")
    if match:
        files.extend(iglob(os.path.join(match,"*.{}".format(ext))))
print(files)

または、本当にリストカンプが必要な場合:

files = [f for dirpath, dirnames, file in os.walk(path) for f in
         iglob(os.path.join(next(iglob(os.path.join(dirpath, "2*")),
                                 '\\\\'), "*.{}".format(ext)))]
print(files)
于 2015-06-16T22:08:01.577 に答える