5

私はこれをしたい:

from fileName import variableName

fileName をハードコーディングしても問題ありません。しかし、fileName を文字列変数として使用する必要があり、それは機能していないようです。

質問のコンテキストは、ファイル名を引数として持つ関数を作成しようとしているということです。この関数は、引数で指定されたファイルから variableName をインポートし、variableName の値 (リスト) を返します。引数で指定される可能性のあるさまざまなファイルのそれぞれには、次のような python ステートメントが 1 つだけ含まれています。

data = [xxxxx]

ただし、コンテンツ (xxxx) は数千行の長さです。文字列または文字列に評価される変数を "from..." ステートメントの 2 番目の単語に入れるだけではコンパイルされません。また、ステートメント全体を含む文字列を作成してから eval(string) を実行しようとしましたが、「無効な構文」も表示されます。他にどうすればこれを行うことができますか? ドキュメントには、「from...」ステートメントはコンパイラ ディレクティブではないと書かれていますが、実行時に評価されるので、これでうまくいくはずだと思いました。

4

1 に答える 1

3

importlib.import_module関数を使用します。

import importlib

fileName = ['a','b','c']
for file in fileName:
    module = importlib.import_module(file)
    data.append(module.variableName)

これは次のようになります:

from a import variableName
from b import variableName
from c import variableName

お役に立てれば!

于 2013-11-04T03:02:11.990 に答える