gpt4 book ai didi

python - 从 python 脚本返回值的最佳方法

转载 作者:IT老高 更新时间:2023-10-28 21:32:38 27 4
gpt4 key购买 nike

我在 python 中编写了一个脚本,它需要一些文件,运行一些测试并计算 total_bugs 的数量,同时编写包含每个文件信息的新文件(错误+更多)。

从当前工作目录获取几个文件:

myscript.py -i input_name1 input_name2

完成这项工作后,我希望脚本“返回 total_bugs”,但我不确定实现此功能的最佳方式。

目前,脚本会打印如下内容:

[working directory]
[files being opened]
[completed work for file a + num_of_bugs_for_a]
[completed work for file b + num_of_bugs_for_b]
...
[work complete]

一点帮助(注释/提示/代码示例)在这里可能会有所帮助。

顺便说一句,这需要适用于 windows 和 unix。

最佳答案

如果您希望您的脚本返回值,只需从包装您的代码的函数中执行 return [1,2,3] 但您必须导入您的脚本来自另一个脚本,甚至对这些信息有任何用途:

返回值(来自包装函数)

(同样,这必须由单独的 Python 脚本运行并导入才能发挥作用):

import ...
def main():
# calculate stuff
return [1,2,3]

作为指标的退出代码

(这通常只适用于当您想向管理者指出出了什么问题或只是计数的错误/行数或 w/e。通常 0 是一个好的退出,>=1 是一个不好的退出,但是你可以用任何你想从中获取数据的方式对它们进行交互)

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')

然后从那里获取值(value)/结果。您甚至可以以 CSV 格式进行操作,以供其他人简单阅读。

作为传送带的套接字

如果上述方法都不起作用,您还可以在本地使用网络套接字 *(unix 套接字是 nix 系统上的好方法)。这些有点复杂,应该有自己的帖子/答案。但是在此处编辑以添加它,因为它是在进程之间进行通信的好选择。特别是如果他们应该运行多个任务并返回值。

关于python - 从 python 脚本返回值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18231415/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com