下らないんだけどね。
ちょっと 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 近くになるもん。