os.walk
os.walkを使うと任意のディレクトリ以下のファイル名を取得することができます。
# walk.py import os import sys for root, dirs, files in os.walk(sys.argv[1]): for f in files: print os.path.join(root, f)
ディレクトリ構成が
- walk.py
- foo
- apple.txt
- bar
- boo
- orange.txt
- boo
こんな感じになっているものとして、./ 以下のファイルを表示してみます。
> python walk.py ./ ./foo/apple.txt ./foo/bar/boo/orange.txt
os.path.joinはパスの要素をうまいこと結合してくれる関数です。
import os print os.path.join('foo', 'bar', 'boo') # => foo/bar/boo print os.path.join('/foo', 'bar/', 'boo') # => /foo/bar/boo print os.path.join('/foo', 'bar/', '/boo') # => /boo
最後の例は /boo が絶対パスだと認識されているのでしょうか……?