[英]Why does python3 --version show an incorrect version after installing it from source inside Docker?
[英]Why does reading from “git --version” show up on a different channel from “python --version” via subprocess?
有人可以解释一下为什么以下命令(“ python --version”)的输出将变为标准错误而不是标准输出吗?
import shlex, subprocess
cmd = subprocess.Popen(shlex.split("git --version"), stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=False)
std_out, std_err = cmd.communicate()
print("std_out: {}".format(std_out))
print("std_err: {}".format(std_err))
cmd = subprocess.Popen(shlex.split("python --version"), stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=False)
std_out, std_err = cmd.communicate()
print("std_out: {}".format(std_out))
print("std_err: {}".format(std_err))
这是打印出来的内容:
std_out: git version 2.19.2
std_err:
std_out:
std_err: Python 2.7.15
我是python的新手,不知道为什么在上述情况下它的行为有所不同。 谢谢。
您的代码没有错。 结果不同是因为这两个程序对(至少)这些命令使用了不同的输出通道。 特别是,看起来git
正在使用stdout
,而python
正在使用stderr
。
为了交叉检查一个程序使用哪个频道,您可以使用此答案中指示的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.