因此,我需要在客户端上获取某些内容的版本,并且当我尝试使用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
答案 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。谢谢大家