75

重複の可能性:
Python での動的モジュールのインポート

ディレクトリからファイルの名前を取得し、これを別のモジュールに渡し、ファイルをインポートする小さなスクリプトを作成しています。

フローは次のようになります 1) モジュール名を取得する (変数に格納する) 2) この変数名をモジュールに渡す 3) 名前が変数名に格納されているモジュールをインポートする

私のコードは

data_files = [x[2] for x in os.walk(os.path.dirname(sys.argv[0]))]
hello = data_files[0]
modulename = hello[0].split(".")[0]

import modulename

問題は、import ステートメントに到達したときに、この変数に格納されている値ではなく、modulename を実際のモジュール名として読み取ることです。これがPythonでどのように機能するかわかりません。この問題を解決するための助けがあれば素晴らしいでしょう

4

2 に答える 2

67

組み込み__import__関数が必要です

new_module = __import__(modulename)
于 2012-11-28T04:55:47.557 に答える
43

importlib はおそらく進むべき道です。そのドキュメントはhereです。通常、ほとんどの用途で優先さ__import__ます。

あなたの場合、次を使用します:

import importlib
module = importlib.import_module(module_name, package=None)
于 2012-11-28T04:58:40.173 に答える