特定の文字列で始まるディレクトリを飛ばして処理するサンプル

最近、暇を見つけてはPythonの標準ライブラリのドキュメントを読んでいるbonlifeです。結構奥が深いです。
ということで、以下の内容をid:mitszoさんに捧げます。

import os

def do_something()
    """do something"""
    pass

for root, dirs, files in os.walk('.'):
    for dir in dirs:
        if dir.startswith('.'):
            dirs.remove(dir)
    for file in files:
        do_something(os.path.join(root, file))

os.walk() についてはこちらをご参照くださいませ。
ポイントは os.walk() の結果として返ってくるタプルの2つ目にリストとして返ってくる dirs を調べて、不要なディレクトリを削除しちゃってる部分です。

topdown が真のとき、呼び出し側は dirnames リストを、インプレ ースで (たとえば、del やスライスを使った代入で) 変更でき、 walk() はdirnames に残っているサブディレクトリ内のみを 再帰します。これにより、検索を省略したり、特定の訪問順序を強制したり、呼 び出し側が walk() を再開する前に、呼び出し側が作った、または 名前を変更したディレクトリを、walk() に知らせたりすることがで きます。

os.walk() の引数で指定できる topdown は、デフォルトでは True なので、上記の通りの動きになります。つまり、dirs から remove したディレクトリ以下は完全に os.walk() の処理対象外になります。os.walk() はなかなか小粋な generator ですね。(というより、正確には小粋な generator を生成する関数ですね、かしら。)