python popen不打印标准输出

python popen不打印标准输出,python,subprocess,popen,Python,Subprocess,Popen,我正在尝试将来自dell的命令racadam(它是一个命令行工具)运行到subprocess.popen中 但是我拿不回标准件或标准件。这就是我正在做的 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.commu

我正在尝试将来自dell的命令racadam(它是一个命令行工具)运行到subprocess.popen中

但是我拿不回标准件或标准件。这就是我正在做的

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=(我可能会错过一些步骤吗?或者有隐藏的技巧吗


谢谢各位。

不确定您是否在运行代码时实际编写了
t而不是
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

什么是prog,为什么要使用
shell=True
t插入并吃“s”,以便在shell中运行它并能够获取信息,我阅读的教程都使用shell=True。如果我使用False,则得到WindowsError:[Error 740]请求的操作需要提升。我认为您缺少了一些双反斜杠。在c:,在文件之后,在Dell之后。分配后打印出来只是为了确保。确实,我得到了c:\Program Files\Dell\SysMgt\rac5\racadm.exe,并且控制台运行正常,它甚至可以超快速地打开控制台,然后关闭,以便获取正确的.exe file。由于racadm.exe是一个需要tty的程序,您可能有兴趣阅读此内容。您可能对tty有问题。谢谢。我确实尝试过,这就是我得到的结果。最终输出/错误为0表示字符串中没有任何内容,如“”直接运行时,
prog
的输出是什么?应该与图像中的类似。我的返回代码为None=(我使用.wait()之后,我得到的返回代码为0)