2016-11-25 2 views
2

私は、ユーザーがファイルを保存して戻し、ファイルの名前を付け加えることができるプログラムを作っています。xが文字列であるときに `from x import *`を実行する方法

どのようにモジュールのすべての属性を動的にインポートできますか?

など。下記の擬似コードのようなもの:

module_name = input() 
from module_name import * 

module_nameは "の.py" で終わるものとします。
私はpython 3.5を使用しています。

+0

あなたは '__import__'を探しているようですね:http://stackoverflow.com/questions/13598035/importing-a-module-when-the-module-name-is-in-a-variable – happydave

+0

私はあなたの質問にいくつかの変更を加えました。あなたが言うべきものでない場合は、編集を元に戻したり編集したりしてください。 –

+0

exec( 'import {}'。format(the_input)) - 素早く汚れていますが、 'the_input'をフィルタリングしない限り(例えば、Pythonの識別子でありキーワードではないことを確認するなど)地元の人々と地球規模の人々のための独自の言葉。 –

答えて

2

これは恐ろしい考えですが、mathモジュールを読み込み、その機能の一部を使用した例です。

jmd_dkことで、コードの改善)
import importlib 

my_module = importlib.import_module('math')  
globals().update(my_module.__dict__) 

print(globals()) 
print(sin(pi/2)) 


from x import *すべてをインポートして、潜在的にローカル属性が上書きされるので、それは悪いアイデアのように聞こえます。

さらに、辞書を使用して目標を達成するためのより明確な方法があります。

関連する問題