ofe*_*fer 43 python return return-value
我在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]
Run Code Online (Sandbox Code Playgroud)
一些帮助(注释/提示/代码示例)在这里可能会有所帮助.
顺便说一下,这需要适用于windows和unix.
Tor*_*xed 93
如果您希望脚本返回值,只需return [1,2,3]
从包含代码的函数执行,然后您必须从另一个脚本导入脚本甚至可以使用该信息:
(再次,这将必须由一个单独的Python脚本运行,并导入,以便甚至做任何好事):
import ...
def main():
# calculate stuff
return [1,2,3]
Run Code Online (Sandbox Code Playgroud)
(这通常只适用于你想向州长指出出了什么问题,或者只是计算了错误/行的数量或w/e.通常0是一个很好的退出而且> = 1是一个糟糕的退出但你可以 - 以任何你想要从中获取数据的方式来填充它们)
import sys
# calculate and stuff
sys.exit(100)
Run Code Online (Sandbox Code Playgroud)
并根据您想要告诉您的州长的具体退出代码退出.我通过调度和监视环境运行脚本时使用退出代码来指示发生了什么.
如果不是,你必须使用stdout与外界沟通(就像你所描述的那样).但这通常是一个坏主意,除非它是一个执行你的脚本的解析器,并且可以捕获你正在报告的任何内容.
import sys
# calculate stuff
sys.stdout.write('Bugs: 5|Other: 10\n')
sys.stdout.flush()
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
您是否在受控制的调度环境中运行脚本,然后退出代码是最佳方法.
还可以选择简单地将信息写入文件,并将结果存储在那里.
# calculate
with open('finish.txt', 'wb') as fh:
fh.write(str(5)+'\n')
Run Code Online (Sandbox Code Playgroud)
并从那里获取价值/结果.你甚至可以用CSV格式让别人简单阅读.