2012-02-06 29 views
0

我执行python命令,无法执行命令后,读子输出

proc = subprocess.Popen(cmd, 
         shell=False, 
         stdin=subprocess.PIPE, 
         stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE, 
         ) 

我想读的stderr和标准输出

res = proc.stderr.read() 

在res我期待的任何错误或' '

但是阅读stderr所花费的时间是无限的,不会读取数值,无论结果如何,它都会在无限的时间内流逝。

某段时间回来相同的代码工作正常,但不知道为什么它现在不阅读stderr。

任何提示,谢谢。

回答

1

而不是显式调用stderr.read(),只是在proc上进行通信。

output, error = proc.communicate() 

这样你就可以通过与进程进行通信来获得输出和错误。

+0

我试着用相同的方法,但读取proc需要无限的时间,:(不知道为什么...... !! – Shashi 2012-02-06 14:06:42

+1

Shashi,然后你的进程被阻塞,问题出在你的cmd上,等待一些输入,尝试一个不同的命令,或者当你发送标准输入到PIPE时,请执行proc.communicate('input \ n') – 2012-02-06 14:12:01

+0

@ Senthil Kumaran确定我会尝试。 – Shashi 2012-02-06 14:13:54