Python,动态调用脚本

时间:2010-03-06 02:12:23

标签: python command

我想从另一个内部运行python脚本。在内部,我的意思是来自子脚本的任何状态更改都会影响父级的状态。因此,如果在子项中设置了变量,则会在父项中更改它。

通常你可以做类似

的事情
import module

但问题是这里运行的子脚本是父脚本的参数,我认为你不能使用带变量的导入

像这样的东西

$python run.py child.py

这将是我期望发生的事情

#run.py

#insert magic to run argv[1]
print a

#child.py
a = 1

$python run.py child.py
1

2 个答案:

答案 0 :(得分:9)

您可以使用__import__功能,该功能允许您动态导入模块:

module = __import__(sys.argv[1])

(您可能需要删除尾随.py或不在命令行中指定它。)

来自Python文档:

  

直接使用__import__()的情况很少见,除非您要导入名称仅在运行时已知的模块。

答案 1 :(得分:1)

虽然__import__当然执行指定的文件,但它也将它存储在python模块列表中。如果要重新执行同一个文件,则必须重新加载。

您还可以查看更适合您需求的python exec语句。

来自Python文档:

  

此语句支持Python代码的动态执行。第一个表达式应该计算为字符串,打开文件对象或代码对象。