【发布时间】:2015-03-09 18:19:59
【问题描述】:
我正在尝试将命令 racadam 从 dell(它的命令行工具)运行到 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 =(我可能错过了一些步骤吗?还是有什么隐藏的技巧?
谢谢大家。
【问题讨论】:
-
什么是 prog,你为什么使用
shell=True -
tdout insert eat the "s" ,在shell中运行它并能够取回信息,我阅读的教程都使用shell=True。如果我做 False 我得到 WindowsError: [Error 740] The requested operation requires elevation
-
我认为您缺少一些双反斜杠。在 c:、Files、Dell 之后。分配后打印出来以确保。
-
做了,我确实得到了 C:\Program Files\Dell\SysMgt\rac5\racadm.exe 并且控制台运行良好,它甚至可以超快地打开控制台然后关闭,所以它抓住了右边.exe 文件。
-
由于 racadm.exe 是一个需要 tty 的程序,您可能有兴趣阅读本文。 *.com/questions/14941749/… 。您的 tty 可能有问题。
标签: python subprocess popen