0

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

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

1 回答 1

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']
于 2012-08-28T14:55:46.910 回答