免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: wn0112
打印 上一主题 下一主题

[求助]Python管道即时读取输出问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-05-30 14:11 |只看该作者
jeppeter 发表于 2013-05-30 12:49
回复 7# wn0112

说的就是read()不能即时啊……只有readline()加个延时循环才能达到目的,现在是想寻求更好的方法……

论坛徽章:
0
12 [报告]
发表于 2013-05-30 14:19 |只看该作者
laike9m 发表于 2013-05-30 12:56
试试把读取管道内容的代码放在另一个线程里面呢?我以前在某个需要输出即时进度的地方这样做过。

怎么放呢?

我的问题是:
  • 现在我用readline()加一个延迟循环读取是可以实现的即时,正如我一楼的例子。但我觉得这个例子不是很好,有没有更好的方式?
  • 用read()读Log达不到即时的效果,read()会等待myapp.exe结束才读取全部Log。是我使用错误,还是它就是这样的?

论坛徽章:
0
13 [报告]
发表于 2013-05-30 14:20 |只看该作者
106033177 发表于 2013-05-30 13:06
回复 1# wn0112
subprocess.Popen('myapp.exe file.ext',bufsize=0, stdout=subprocess.PIPE) 

bufsize=0试过了
使用pipe.stdout.read() 还是会等待myapp.exe结束才读取全部

论坛徽章:
0
14 [报告]
发表于 2013-06-14 18:23 |只看该作者
这个可以
  1. import subprocess
  2. pipe = subprocess.Popen('myapp.exe file.ext', stdout=subprocess.PIPE)
  3. for line in iter(pipe.stdout.readline, ''):     
  4.     print line
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP