我有一个简单的脚本,其结构为:
if __name__ =='main':
#do some logic
#print to console the result
现在,我使用subprocess.Popen()
方法通过代码运行脚本,如下所示:
p = subprocess.Popen(
["python", path_of_script_to_run] + arguments_list,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
我的问题是如何使用返回值或其他方法将正在运行的脚本中的值返回到调用脚本。
我不能在if __name__ =='main':
的上下文中使用return
那么这是否意味着我无法将调用脚本中指定的返回值传递给p
变量?
我也想尝试避免解析运行到控制台的脚本的打印..
答案 0 :(得分:0)
您可以使用subprocess.check_output()
from subprocess import check_output
result = check_output(args).decode()
要同时捕获结果中的标准错误,请使用stderr=subprocess.STDOUT
。
答案 1 :(得分:0)
使用communicate()
检索脚本的输出。并returncode
获取退出代码。
p = subprocess.Popen(
["python", path_of_script_to_run] + arguments_list,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
(stdoutdata, stderrdata) = p.communicate()
exit_code = p.returncode
要让您的其他脚本返回退出代码,您应该使用sys.exit(code)
。
import sys
if __name__ =='main':
try:
# do stuff
sys.exit(0)
except Exception as err:
print(err)
sys.exit(1)