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