如果您想让脚本返回值,只需从包装代码的函数中执行return [1,2,3]
,但这样一来,您必须从另一个脚本导入您的脚本,才能对该信息进行任何有意义的使用:
返回值(来自包装函数)
(同样,这必须由单独的Python脚本运行并导入,才能发挥任何作用):
import ...
def main():
return [1,2,3]
退出码作为指示器
(这通常只适用于当您想向管理员指示出了什么问题或仅需要计算错误/行数或其他内容时。通常,0是良好的退出值,而>= 1是不良退出值,但您可以按任何方式解释它们以获取数据)
import sys
# calculate and stuff
sys.exit(100)
根据你想要告诉你的管理者的信息,使用特定的退出代码退出。当通过计划和监控环境运行脚本时,我使用退出代码来指示发生了什么。
(os._exit(100)
也可以使用,且更加强制)
使用标准输出作为中继
如果没有,您必须使用stdout与外界通信(就像您所描述的那样)。但这通常是个坏主意,除非是解析器执行您的脚本并且能够捕获您报告的任何信息。
import sys
sys.stdout.write('Bugs: 5|Other: 10\n')
sys.stdout.flush()
sys.exit(0)
如果您正在受控的调度环境中运行脚本,那么退出代码是最好的选择。
文件作为传输介质
还有一种选项,就是将信息简单地写入文件并在那里存储结果。
with open('finish.txt', 'wb') as fh:
fh.write(str(5)+'\n')
从那里获取价值/结果。您甚至可以以CSV格式进行操作,以便供他人简洁阅读。
套接字作为传送带
如果上述方法均不起作用,则还可以在本地使用网络套接字(*在nix系统上,Unix套接字是一个很好的选择)。这些有点复杂,值得拥有它们自己的帖子/答案。但是编辑并将其添加到此处,因为它是在进程之间通信的良好选择。特别是如果它们应该运行多个任务并返回值。