Pythonで再帰的に全てのファイルやディレクトリのリストを作るときは、os.walk()
とジェネレーター(yield
)を組み合わせた関数を作っとくと楽。
例えばこんなディレクトリ構成
$ tree /tmp/test
/tmp/test
├── 1
│ ├── a
│ │ ├── A
│ │ ├── B
│ │ └── hoge
│ └── b
│ ├── A
│ ├── B
│ └── hoge
└── 2
├── bar
├── c
│ ├── buzz
│ └── fizz
└── foo
9 directories, 6 files
import os
def find_all_files(directory):
for root, dirs, files in os.walk(directory):
yield root
for file in files:
yield os.path.join(root, file)
for file in find_all_files('/tmp/test'):
print file
出力
/tmp/test
/tmp/test/1
/tmp/test/1/a
/tmp/test/1/a/hoge
/tmp/test/1/a/A
/tmp/test/1/a/B
/tmp/test/1/b
/tmp/test/1/b/hoge
/tmp/test/1/b/A
/tmp/test/1/b/B
/tmp/test/2
/tmp/test/2/bar
/tmp/test/2/foo
/tmp/test/2/c
/tmp/test/2/c/buzz
/tmp/test/2/c/fizz
関連記事
-
PHP - ディレクトリを再帰的に削除する方法のメモ - Qiita: PHPで同じようなことをする場合は
RecursiveIteratorIterator
を使うとできる