【发布时间】:2016-06-22 13:34:05
【问题描述】:
我有一个简单的脚本,其结构如下:
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 变量?
我还想尝试避免将脚本的打印结果解析到控制台..
【问题讨论】:
-
list + list 在 python 中是一个连接的列表
-
可以使用
exit设置返回码。例如,假设您要返回 2,只需执行exit(2)。 -
我想传递一个整数元组之类的东西,例如 (1,5)
-
最好的方法是导入要运行的脚本并调用返回所需数据的方法。请参阅 JF Sebastian stackoverflow.com/questions/30664263/… 的回答
-
将数据写入
stdout并让父脚本解析它是很常见的。但是,如果脚本还输出了其他难以解析的内容,那么您就有问题了。也许那个子脚本应该有一个“简洁模式”标志,告诉它停止闲聊,只返回一个容易解析的结果。
标签: python subprocess