Nascent_Notes、素敵なスクリプトです! uu
ロード(コマンド 3) とロードされたモジュールのリストの出力 (コマンド 2)を試みましたが、どちらも正常に動作しているようです。
ただし、「モジュールを参照」(コマンド 4) しようとすると、次のエラーが表示されます。
HlpWiz>>> 4
What module do you want to look more into?: uu
*An error occurred - probably because the module isn't loaded or is misspelled*
実行してみてください
#!/usr/bin/env python
import sys
__import__('uu')
print(sys.modules['uu'])
print(dir(uu))
を取得する必要がありますNameError: name 'uu' is not defined
。
したがって__import__
、モジュールは正常にインポートされますが、グローバル名前空間にuu
は追加されないようです。変数 name でモジュールにアクセスすることはできません。ただし、次の方法でアクセスできます。uu
uu
uu
sys.modules
したがって、変更
var_mod = input("What module do you want to look more into?: ")
print "\n attempting to browse... please wait!"
time.sleep(2)
browse_mod(zlib = var_mod)
に
var_mod = raw_input("What module do you want to look more into?: ")
print "\n attempting to browse... please wait!"
time.sleep(2)
browse_mod(zlib = sys.modules[var_mod])
raw_input
使用するよりもはるかに安全であるだけでなくinput
(ユーザーは予期しない/悪意のあるコマンドを実行できません)、ここで必要なことも実行raw_input
します。
マイナーな注意点として、変更することもできます
i = 1
for line in sample:
print i, line
i = i + 1
よりpythonicに
for i,line in enumerate(sample):
print i+1, line
編集:
sys.modules は dict (ディクショナリの略) です。dict は電話帳のようなものです。名前 (「キー」として知られています) を指定すると、電話番号 (より一般的には「値」) が返されます。
sys.modules の場合、キーはモジュール名 (文字列) です。値はモジュール オブジェクトそのものです。
ブラケット表記を使用して辞書内の値にアクセスします。単なるuu
文字列です
sys.modules['uu']
が、モジュールですuu
。
ここで dict の全文を読むことができます: http://docs.python.org/tutorial/datastructures.html#dictionaries