os.walk関数を使ってファイル数を列挙する

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 のリポジトリのファイルが多いな。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください