gpt4 book ai didi

python 子进程自定义返回码

转载 作者:行者123 更新时间:2023-11-30 22:17:47 24 4
gpt4 key购买 nike

我想从 python 子进程调用中返回一个与返回的错误类型相对应的值。例如:

测试.py

RETCODE_OK = 0
RETCODE_THING_1_FAILED = 1
RETCODE_THING_2_FAILED = 2

def main():
return RETCODE_THING_2_FAILED

if __name__ == '__main__':
main()

然后我用子进程调用它,如下所示:

>>> import subprocess
>>> proc = subprocess.Popen('python test.py', shell=True)
>>> proc.communicate()
(None, None)
>>> proc.returncode
0

我希望它返回 main() 中返回的任何内容,在本例中为 2。我在 stdout 和 stderr 流中还有其他内容,所以我不能只是 print RETCODE_THING_2_FAILED并获取标准输出。

最佳答案

进程使用退出代码,而不是返回语句。您应该使用 sys.exit(STATUS) 而不是 return STATUS 语句:

test2.py:
---------
import sys

def main():
sys.exit(RETCODE_THING_2_FAILED)

if __name__ == '__main__':
main()

interpreter:
------------
>>> p = subprocess.Popen('python test2.py')
>>> p.communicate()
(None, None)
>>> p.returncode
2

这是因为该进程实际上正在关闭/退出,而不是向另一个函数返回值。

关于python 子进程自定义返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49539002/

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