导入模块不同于将其作为脚本执行。如果您不信任Python子脚本,则不应该从它运行任何代码。在
使用另一个Python模块中某些代码的常规方法:import another_module
result = another_module.some_function(args)
如果要执行它而不是导入:
^{pr2}$
^{}在Python中很少使用。它可能在调试器、分析器或在工具中运行setup.py,例如pip,easy_install中运行{}。在
如果另一个脚本在不同的进程中执行,则可以使用多个IPC methods。最简单的方法是将管道序列化(Python对象转换为bytestring)输入参数到子进程的stdin中,并将结果从其stdout中读回suggested by @kirelagin:import json
import sys
from subprocess import Popen, PIPE
marshal, unmarshal = json.dumps, json.loads
p = Popen([sys.executable, 'some_script.py'], stdin=PIPE, stdout=PIPE)
result = unmarshal(p.communicate(marshal(args))[0])
其中some_script.py可以是:#!/usr/bin/env python
import json
import sys
args = json.load(sys.stdin) # read input data from stdin
result = [x*x for x in args] # compute result
json.dump(result, sys.stdout) # write result to stdout