在Linux中运行命令时,Python Popen,OS,命令均不返回任何内容

时间:2018-11-13 01:19:16

标签: python python-2.7 subprocess

因此,我需要在客户端上获取某些内容的版本,并且当我尝试使用Popen,Call,Check_Call,OS,Commands时,所有这些都不会返回任何值。当我在腻子系统上运行脚本时,它会返回空行。可能是因为腻子吗?如果在Linux上运行,那么CentOS会有所不同。谢谢大家。

def getJavacVer():
    p = sp.Popen("javac -version", stdout=sp.PIPE, shell=True)
    (output, err) = p.communicate()
    print output

3 个答案:

答案 0 :(得分:1)

javac程序通过-version返回stderr输出,因此也需要传递stderr的{​​{1}}参数。试试:

Popen

结果的第二个元素是>>> from subprocess import Popen >>> from subprocess import PIPE >>> p = Popen(['javac', '-version'], stdout=PIPE, stderr=PIPE) >>> p.communicate() (b'', b'javac 1.8.0_171\n') 流的捕获输出,其中包含版本号。

答案 1 :(得分:0)

这仅适用于* nix:

import commands
print commands.getstatusoutput('javac -version')

答案 2 :(得分:0)

感谢您回答了这个问题的几个家伙。输出将输出到stderr而不是stdout。谢谢大家