我正在传递像
这样的argspython file.py arg1 arg2 arg3
我想知道是否有办法将这些args视为对象而不是以下代码的字符串:
one = sys.argv[1]
two = sys.argv[2]
three = sys.argv[3]
from one import two
a = two.three()
因为一两三就是字符串。如何将它们解析为对象?
更新:
pkg = import_module(two, package=one)
给出
__import__(name)
ImportError: No module named <whatever_module_name>
答案 0 :(得分:2)
您可以使用importlib for Python 2或importlib for Python 3。
import importlib
path = importlib.import_module('os.path')
print(path.join('a','b'))
答案 1 :(得分:1)
您可以使用内置的__import__
或imp
module以编程方式导入对象:
# Import 'name' relative to 'path'
module = imp.load_module(name, *imp.find_module(name, [path]))
每当我想以编程方式导入模块时,我就是这样做的,但是imp.find_module
会返回一个3元组:
fil, path, desc = imp.find_module(name, [path])
module = imp.load_module(name, fil, path, desc)
答案 2 :(得分:1)
我认为你想要的是__importing__
。
spam = __import__('spam', globals(), locals(), [], 0)