特定フォルダ配下のファイルに含まれる単語リスト

下らないんだけどね。

ちょっと Pygments 関係でそんなことをしたくなって。ほんとは Unix 系の dicts でもおおよそまかなえそうなニーズではあるんだけどね、「キーワードマッチングのテストに使いたい」なので。

他愛もないよ:

 1 # -*- coding: utf-8 -*-
 2 import os
 3 import re
 4 
 5 allwords = set()
 6 for root, dirs, files in os.walk('.'):
 7     for fn in files:
 8         p = os.path.join(root, fn)
 9         allwords.update(re.findall(r'\w+', open(p).read(), re.MULTILINE))
10 
11     for ign in ('.hg', 'build', 'dist'):
12         if ign in dirs:
13             dirs.remove(ign)
14 
15 print("\n".join(sorted(allwords)))

いわゆる猛烈バッチなので、結構処理時間かかるかと思って、動かして席立とうとしたら一瞬で終わって拍子抜け。対象がまさに「Pygments」のソースツリー全体で、ソースもテスト用の examplefiles もかなりの量なんだけどね、それでもこんなか(1秒以内)。

あ、もちろん標準出力に吐きっぱなしだと終わらないよ。リダイレクトでファイルに、で、一瞬。だって結果ファイル 1MB 近くになるもん。