在python脚本中多次调用python脚本的最佳方法

时间:2012-08-28 14:34:10

标签: python import subprocess popen

我需要使用不同的参数多次在另一个python脚本中执行python脚本。 我知道这听起来很可怕,但有理由。 然而问题是被调用者脚本检查它是否被导入或执行(如果__name__ =='__ main__':...)。

  1. 我知道我可以使用subprocess.popen(“python.exe callee.py -arg”),但这似乎要慢得多,我想这是因为Python.exe正在启动和终止多次
  2. 我无法定期将脚本作为模块导入,因为它的设计如开头所述 - 在导入时,它将在没有args的情况下执行,因为它缺少main()方法。
  3. 我无法更改被调用者脚本
  4. 据我所知,我不能使用execfile()因为它不带参数

1 个答案:

答案 0 :(得分:2)

为您找到解决方案。你可以在python中重新加载一个模块,你可以修补sys.argv。

想象一下,echo.py是您想要多次调用的被调用者脚本:

#!/usr/bin/env python
# file: echo.py

import sys
print sys.argv

您可以作为来电者脚本:

#!/usr/bin/env python
# file: test.py 
import sys
sys.argv[1] = 'test1'
import echo
sys.argv[1] = 'test2'
reload(echo)

并使用以下命令调用它:python test.py place_holder

它将打印输出:

['test.py', 'test1']
['test.py', 'test2']