【问题标题】:Python3 subprocess check_output returns empty for some commandsPython3 子进程 check_output 对于某些命令返回空
【发布时间】:2014-06-29 10:28:33
【问题描述】:

我是 python3 初学者。我正在尝试使用 python3 脚本获取 java 版本。检查文档后,我发现 subprocess.check_output 可能是我需要的。

output = subprocess.check_output(["java", "-version"])
print("Output is {}".format(output))

问题是我得到的输出是

Output is b''

为什么我没有得到我使用 bash 得到的正确字符串?

谢谢

【问题讨论】:

    标签: python-3.x subprocess


    【解决方案1】:

    由于某种原因,您的输出位于stderr。您可以像这样通过管道将其传递给返回值:

    output = subprocess.check_output(["java", "-version"], stderr=subprocess.STDOUT)
    

    如果有人知道它为什么发给stderr,我会很高兴听到的。例如,["python", "--version"] 按预期工作。

    【讨论】:

    • 我可以确认:java -version 命令打印到我系统上的 stderr。 man java 没有指定输出应该去哪里。因此,除非java -versionprints directly to terminal;否则您的代码同时涵盖了标准输出/标准错误。它应该可以工作。
    猜你喜欢
    • 2019-05-30
    • 1970-01-01
    • 2015-03-11
    • 2015-09-25
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多