モジュールのソースコードを確認するときは「inspect」を使ってソースの中身を確認することが出来ます。
「inspect」を使う際にはソースを書いて、実行しないといけないのですが、いちいち書くのがめんどくさかったので、確認したいモジュールを引数で渡してモジュールのソースコードを確認するツールを作成してみました。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
サンプルソースを読むうえで理解しておきたいこと
基本的にこの章の内容は読み飛ばしてOKです。サンプルソースでわからないところがあれば参照してみてください。
- 引数の取得方法
- ファイルの書き込み方法
- Pythonファイルの実行方法
- inspectの使い方について
ツールの説明
詳しくは 「 inspect の使い方について」で紹介していますが対象のモジュールをインポートして「 inspect.getsource(対象モジュール) 」で取得した内容をprintすれば対象モジュールのソースコードを確認できます。
下のサンプルソースで言うと「 configparser 」を動的に変更すれば、対象モジュールのソースコードが確認できます。
作成したプログラムが以下になります。
まず初めに、モジュールのインポートを行います。
実行中のプログラムからPythonを呼び出すために「 subprocess 」をコマンドラインから引数を受け取るために「sys」をインポートします。
import subprocessimport sys
4行目、5行目でコマンドラインから引数を受け取ります。引数で対象モジュールを受け取るように作ってあります。
args = sys.argvmodule = args[1]
7行目〜11行目の処理で「sample_inspect_getsource.py」と同様の処理を「work.py」に書き込みます。
f = open(path, 'w')f.writelines("import inspect\r\n")f.writelines("import " + module + "\r\n")f.writelines("print(inspect.getsource(" + module + "))\r\n")f.close()
ここで、「work.py」を呼び出すコマンド「python work.py」を実行します。
subprocess.call('python %s' % path)
実行結果
まず実行前に「work.py」か存在しないことを確認します。

「configparser」を引数にして、「 sample_module_print.py 」を実行します。
スポンサーリンク

「work.py」も作成されており、意図したソースコードが記述されています。


おわりに
今回は、さまざまなモジュールを組み合わせて、動的にモジュールの内容を確認する方法について説明しました。
調べている途中に、「PyCharm」で簡単にモジュールの中身を確認する方法を見つけたので機会があったら記事にしようと思います。