使用python获取Shell输出

使用python获取Shell输出,python,linux,shell,operating-system,subprocess,Python,Linux,Shell,Operating System,Subprocess,$jsonlint-cq/home/test/notokay1.json 上述命令具有退出值1和以下输出 /home/notokay1.json:第6行第1列找到:“EOF”-应为:'}',',' 如何在Python中捕获这两者。我相信这就是您想要的: $ jsonlint -cq /home/test/notokay1.json > stdout.txt; echo $? > stderr.txt 然后可以使用读取stdout.txt和stderr.txt 参考资料:使用: 您可

$jsonlint-cq/home/test/notokay1.json

上述命令具有退出值1和以下输出

/home/notokay1.json:第6行第1列找到:“EOF”-应为:'}',','


如何在Python中捕获这两者。

我相信这就是您想要的:

$ jsonlint -cq /home/test/notokay1.json > stdout.txt; echo $? > stderr.txt
然后可以使用读取stdout.txt和stderr.txt

参考资料:

使用:

您可以使用模块,更具体地说是方法

假设您有一个名为test.bash的文件,其中包含以下内容:

echo "Hi"
exit 1
要捕获退出代码和输出,可以执行以下操作:

# test.py file
import subprocess

exitCode = 0
output = ""
try:
    output = subprocess.check_output(["bash", "test.bash"]) # get only ouput
except subprocess.CalledProcessError as e:
    # get output and exit code
    exitCode = e.returncode
    output = e.output

print(output, exitCode)
哪些产出:

bash-4.2$ python test.py 
('Hi\n', 1)

您只需要将其适应您的问题。

我使用的正是:)OP最有可能尝试捕获标准错误,而不是标准输出。
bash-4.2$ python test.py 
('Hi\n', 1)