无法执行命令后,读子输出
问题描述:
我执行python命令,无法执行命令后,读子输出
proc = subprocess.Popen(cmd,
shell=False,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
我想读的stderr和标准输出
res = proc.stderr.read()
在res我期待的任何错误或' '
但是阅读stderr所花费的时间是无限的,不会读取数值,无论结果如何,它都会在无限的时间内流逝。
某段时间回来相同的代码工作正常,但不知道为什么它现在不阅读stderr。
任何提示,谢谢。
答
而不是显式调用stderr.read(),只是在proc上进行通信。
output, error = proc.communicate()
这样你就可以通过与进程进行通信来获得输出和错误。
我试着用相同的方法,但读取proc需要无限的时间,:(不知道为什么...... !! – Shashi 2012-02-06 14:06:42
Shashi,然后你的进程被阻塞,问题出在你的cmd上,等待一些输入,尝试一个不同的命令,或者当你发送标准输入到PIPE时,请执行proc.communicate('input \ n') – 2012-02-06 14:12:01
@ Senthil Kumaran确定我会尝试。 – Shashi 2012-02-06 14:13:54