我试图stdout
从电话中subprocess.Popen
接听电话,尽管我很容易通过以下方式实现这一目标:
cmd = subprocess.Popen('ls -l', shell=True, stdout=PIPE)
for line in cmd.stdout.readlines():
print line
我想stdout
“实时”抓取。使用上述方法,PIPE 正在等待抓取所有stdout
内容,然后返回。
因此,出于记录目的,这不符合我的要求(例如“查看”发生的情况)。
有没有办法在运行时逐行获取stdout
?或者这是一个限制subprocess
(必须等到PIPE
关闭)。
编辑
如果我切换readlines()
,readline()
我只会得到stdout
(不理想)的最后一行:
In [75]: cmd = Popen('ls -l', shell=True, stdout=PIPE)
In [76]: for i in cmd.stdout.readline(): print i
....:
t
o
t
a
l
1
0
4