python子进程如何接受powershell退出代码?

wfypjpf4  于 2022-12-23  发布在  Shell
关注(0)|答案(1)|浏览(111)

在我的根目录中

$ cat pssa.py
import subprocess,sys
p = subprocess.Popen(["powershell.exe",".\\pre-commit.ps1"],
    stdout=sys.stdout,stderr=sys.stderr,shell=True)
p.communicate()

ps1返回1,所以它是错误的,但是

python pssa.py

返回0。
Forgive us the complete lack of python skills, but I'm stuck. Grateful for help suggesting how python pssa.py can return the error code from the powershell script.
我想我在什么地方读到过Popen不等待脚本完成。那么1)有没有另一种方法我可以使用,它确实等待,并且反过来可以从Powershell读取返回代码?
Python是安装在Windows上的,上面的想法是为了能够在Windows上有意义地使用,例如,pre-commit run,现在,pre-commit run,执行powershell脚本,但不会像我希望的那样失败。

qyswt5oh

qyswt5oh1#

Popen.communicate等待子进程完成,并将returncode填充到Popen中。您可以按如下方式使用它:

import subprocess, sys
p = subprocess.Popen(["powershell.exe",".\\pre-commit.ps1"],
    stdout=sys.stdout,stderr=sys.stderr,shell=True)
outs, errs = p.communicate()
code = p.returncode

相关问题