如何解决实时子进程。通过stdout和PIPE打开?
您的解释器正在缓冲。在打印语句后,添加对sys.stdout.flush()的调用。
解决方法
我试图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',stdout=PIPE)
In [76]: for i in cmd.stdout.readline(): print i
....:
t
o
t
a
l
1
0
4
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。