python popen不打印stdout

时间:2015-03-09 18:20:00

标签: python subprocess popen

我正在尝试从dell(它的命令行工具)运行命令racadam到subprocess.popen。

但我无法收回标准或者stderr。这就是我在做的事。

prog = "C:\Program Files\Dell\SysMgt\\rac5\\racadm.exe"
pp = subprocess.Popen(prog, shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
pp.communicate()
print pp.communicate()

print pp.communicate()[0]
print pp.communicate()[1]

print pp.stdout.readlines()
print pp.stderr.readlines()

out, err = pp.communicate()
print out
print err

我得到了

('', '')


[]
[]

什么时候应该用什么参数打印帮助。

有趣的是,我可以看到程序终端打开,打印一些行然后关闭超级超快。所以我知道程序正在运行我只是无法将信息恢复到python =(我可能会错过一些步骤吗?还是有隐藏的技巧?

谢谢你们。

1 个答案:

答案 0 :(得分:0)

在运行代码时,不确定您是否实际编写了tdout而不是stdout

试试这个

pp = subprocess.Popen(prog, shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
out, err = pp.communicate()
if pp.returncode == 0:
   final = out
else:
   final = err

print "Final output/Error is "+final