gpt4 book ai didi

python - 如何使用子进程获取返回码

转载 作者:行者123 更新时间:2023-12-01 01:08:00 24 4
gpt4 key购买 nike

所以我尝试执行一个文件并使用子进程库中可用的 python 内置方法获取返回值。

例如,假设我想执行这个 hello_world python 文件:

def main():
print("in main")
return("hello world!")

if __name__ == '__main__':
main()

我不在乎取回声明in main 。我想要取回的是返回值hello world! .

我尝试了很多方法,但没有一个有效。

这是我尝试过的内容及其输出的列表:

args 对于所有试验都是通用的: args = ['python',hello_cmd]

第一次审判:

p1 = subprocess.Popen(args, stdout=subprocess.PIPE)

print(p1.communicate())
print("returncode is:")
print(p1.returncode)

输出为:

(b'in main\n', None)
returncode is:
0

二审:

p2 = subprocess.check_output(args,stderr=subprocess.STDOUT)
print(p2)

输出为:

b'in main\n'

第三次试验:

output, result = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=False).communicate()
print(output)
print(result)

输出为:

b'in main\n'
b''

第四次试验:

p4 = subprocess.run(args, stdout=PIPE, stderr=PIPE)
print(p4)

输出为:

CompletedProcess(args=['python', '/path/to/file/hello.py'], returncode=0, stdout=b'in main\n', stderr=b'')

第五次试验:

p5 =subprocess.getstatusoutput(args)
print(p5)

输出为:

(0, '')

有人可以帮忙吗?

最佳答案

主函数的返回值不是传递给操作系统的返回码。要将返回代码传递给操作系统,请使用 sys.exit() ,它需要一个整数。您可以向其传递一个字符串,但如果这样做,Python 会将 1 传递给操作系统。

关于python - 如何使用子进程获取返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55143926/

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