4

私はPythonを初めて使用します。私はpython<2.7を使用しています。最初は名前がわからないファイルをインポートする必要があります。実際、コマンドプロンプトからファイルの名前を渡す必要があります。名前を読み取って変数に格納しましたが、importステートメントに渡す方法がわかりません。私はコードを試しています

str = sys.argv[lastIndex]
from "%s" import *,str

しかし、それはエラーを与えています

File "IngestDataToMongo.py", line 86
from "%s" import *,str
        ^
SyntaxError: invalid syntax

だからそれを行う方法。また、Python <2.7でも可能です。これは、何らかの理由でPythonのバージョンを変更したり、このコードが実行されている場所に何かをインストールしたりできないためです。

4

3 に答える 3

5

代わりに関数を使用__import__()してモジュールをインポートできます。引数として変数を受け入れます。

しかし、まず第一に、あなたが本当にそれを必要としていることを確認してください-人々が本当にその機能を必要としない時間の90%。

于 2012-11-30T09:16:58.120 に答える
4

importlibモジュールを使用する必要があります

import importlib

mdl = 'urllib'
your_module = importlib.import_module(mdl)
your_module.quote
>>> <function urllib.quote>

編集

Tadeckに感謝します-これはPython2.7および3.1以降で機能します

于 2012-11-30T09:18:59.667 に答える
1

importlibモジュールをインポートしたくない場合は、次のようにします。

import sys
s = sys.argv[lastIndex]
def is_save(s):
    #test if s is a valid argument
    return True or False

if is_save(s):
    exec('from %s import *'%s)

注:(または)の使用は潜在的に危険is_saveであるため、スクリプトの乱用を回避するために関数が必要です。execeval

于 2012-11-30T09:21:20.763 に答える