osモジュールの wolk 関数はちょっと面白い。ディレクトリを指定して呼び出すと、中に含まれるディレクトリ名、サブディレクトリのリスト、ファイルのリストを返すジェネレータを返してくれる。典型的にはこうやって使うみたい。
import os for base_dir, dirs, files in os.walk("."): 何らかの処理
そこで、ディレクトリに含まれるファイル数を列挙するスクリプトを書いてみた。
import os import sys for base_dir, dirs, files in os.walk(sys.argv[1]): num = len(files) print "%8d %-30s" % (num, base_dir)
実行結果:
^o^ > python count_files.py . 83 . 8 .\.git 10 .\.git\hooks 1 .\.git\info 1 .\.git\logs 0 .\.git\logs\refs 1 .\.git\logs\refs\heads 0 .\.git\logs\refs\remotes 1 .\.git\logs\refs\remotes\origin 1 .\.git\logs\refs\remotes\u 0 .\.git\objects 2 .\.git\objects\00 1 .\.git\objects\01 3 .\.git\objects\02 3 .\.git\objects\03 2 .\.git\objects\04 1 .\.git\objects\07 1 .\.git\objects\0c 2 .\.git\objects\0d 1 .\.git\objects\0e 1 .\.git\objects\0f 3 .\.git\objects\10 1 .\.git\objects\13 2 .\.git\objects\14 3 .\.git\objects\16 2 .\.git\objects\17 1 .\.git\objects\19 2 .\.git\objects\1a 3 .\.git\objects\1b 2 .\.git\objects\1c 1 .\.git\objects\1f 2 .\.git\objects\21 5 .\.git\objects\22 5 .\.git\objects\23 1 .\.git\objects\25 1 .\.git\objects\29 2 .\.git\objects\2c 1 .\.git\objects\2e 2 .\.git\objects\2f 2 .\.git\objects\30 1 .\.git\objects\33 1 .\.git\objects\35 1 .\.git\objects\36 1 .\.git\objects\37 1 .\.git\objects\39 3 .\.git\objects\3b 1 .\.git\objects\3c 2 .\.git\objects\40 1 .\.git\objects\41 1 .\.git\objects\42 3 .\.git\objects\43 1 .\.git\objects\44 1 .\.git\objects\49 4 .\.git\objects\4a 2 .\.git\objects\4b 2 .\.git\objects\4d 1 .\.git\objects\4e 3 .\.git\objects\4f 1 .\.git\objects\51 2 .\.git\objects\52 2 .\.git\objects\53 2 .\.git\objects\54 1 .\.git\objects\55 1 .\.git\objects\56 3 .\.git\objects\57 2 .\.git\objects\58 1 .\.git\objects\59 2 .\.git\objects\5a 3 .\.git\objects\5d 2 .\.git\objects\5e 2 .\.git\objects\5f 1 .\.git\objects\61 1 .\.git\objects\62 1 .\.git\objects\66 1 .\.git\objects\67 3 .\.git\objects\68 1 .\.git\objects\69 3 .\.git\objects\6a 2 .\.git\objects\6b 2 .\.git\objects\6c 1 .\.git\objects\6d 1 .\.git\objects\6f 1 .\.git\objects\70 1 .\.git\objects\71 1 .\.git\objects\72 1 .\.git\objects\75 1 .\.git\objects\76 1 .\.git\objects\77 1 .\.git\objects\78 1 .\.git\objects\79 1 .\.git\objects\7b 1 .\.git\objects\7c 2 .\.git\objects\7d 1 .\.git\objects\7f 2 .\.git\objects\80 1 .\.git\objects\85 2 .\.git\objects\86 1 .\.git\objects\87 1 .\.git\objects\88 1 .\.git\objects\89 1 .\.git\objects\8b 2 .\.git\objects\8d 1 .\.git\objects\8e 1 .\.git\objects\8f 1 .\.git\objects\91 2 .\.git\objects\93 1 .\.git\objects\94 3 .\.git\objects\95 1 .\.git\objects\96 3 .\.git\objects\97 1 .\.git\objects\98 2 .\.git\objects\9a 3 .\.git\objects\9b 1 .\.git\objects\9c 3 .\.git\objects\a0 2 .\.git\objects\a3 1 .\.git\objects\a6 1 .\.git\objects\a7 1 .\.git\objects\a9 1 .\.git\objects\ac 1 .\.git\objects\ad 1 .\.git\objects\ae 1 .\.git\objects\b0 2 .\.git\objects\b1 1 .\.git\objects\b3 3 .\.git\objects\b4 2 .\.git\objects\b7 1 .\.git\objects\b9 3 .\.git\objects\ba 1 .\.git\objects\bb 1 .\.git\objects\bd 1 .\.git\objects\c1 1 .\.git\objects\c2 1 .\.git\objects\c4 2 .\.git\objects\c6 2 .\.git\objects\c8 1 .\.git\objects\c9 2 .\.git\objects\cb 1 .\.git\objects\cd 2 .\.git\objects\ce 3 .\.git\objects\cf 2 .\.git\objects\d0 1 .\.git\objects\d3 4 .\.git\objects\d4 1 .\.git\objects\d7 3 .\.git\objects\d8 2 .\.git\objects\d9 2 .\.git\objects\da 1 .\.git\objects\db 3 .\.git\objects\dc 5 .\.git\objects\dd 1 .\.git\objects\e0 1 .\.git\objects\e2 1 .\.git\objects\e3 1 .\.git\objects\e6 1 .\.git\objects\e7 2 .\.git\objects\e9 1 .\.git\objects\ea 1 .\.git\objects\ec 5 .\.git\objects\ed 3 .\.git\objects\ee 1 .\.git\objects\ef 1 .\.git\objects\f0 1 .\.git\objects\f1 2 .\.git\objects\f2 1 .\.git\objects\f3 1 .\.git\objects\f4 2 .\.git\objects\f5 1 .\.git\objects\f8 1 .\.git\objects\fc 1 .\.git\objects\fd 1 .\.git\objects\fe 0 .\.git\objects\info 0 .\.git\objects\pack 0 .\.git\refs 1 .\.git\refs\heads 0 .\.git\refs\remotes 1 .\.git\refs\remotes\origin 1 .\.git\refs\remotes\u 0 .\.git\refs\tags 10 .\projecteuler
git のリポジトリのファイルが多いな。