pythonで指定したディレクトリ以下のコードを読み込んで検索(ついでに開く)

どうしてもnumpyのndarray同士のdot関数を書き換えたかったのだけれどもドキュメント見てもどんな計算してるのかわからない。
numpy.source(numpy.dot)してもソースコードが見れない!
ので力ずくで探した

hoge.py

import os, sys
for dpath,dnames,fnames in os.walk(sys.argv[1]):
    for fname in fnames:
        fullpath = dpath+"/"+fname
        for line in open(fullpath, "r"):
            if line.find(sys.argv[2]) != -1:
                print fullpath

これでターミナルで
python hoge.py ディレクトリ “文字列”
とするとディレクトリ以下のファイルを読み込んで文字列を検索してくれる。
ただし2列にまたがってたりすると検索されない。

python hoge.py /Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/ "def dot"

で実行すると

/Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/distutils/misc_util.py
/Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/ma/extras.py
/Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/oldnumeric/ma.py
/Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/oldnumeric/ma.py

とりあえず全部 openしてみるとextras.pyにそれらしきものがあった。
全部openするにはさっきのコードでprint fullpathってところの次にos.system(“open “+fullpath)って付け加えればいい。
めでたしめでたし。

広告


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中