栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用subprocess.Popen处理大型输出

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用subprocess.Popen处理大型输出

您正在阻止对两个文件的读取。第一个需要在第二个开始之前完成。如果应用程序向写入了很多内容

stderr
,而对却没有写入任何内容
stdout
,那么您的进程将坐在那里等待
stdout
不来的数据,而您正在运行的程序坐在那里等待被写入的内容
stderr
被读取(从不因为-
您正在等待
stdout
)。

有几种方法可以解决此问题。

最简单的是不拦截

stderr
;
离开
stderr=None
。错误将直接输出到
stderr
。您无法拦截它们并将其显示为您自己的消息的一部分。对于命令行工具,这通常是可以的。对于其他应用程序,这可能是个问题。

另一种简单的方法是重定向

stderr
stdout
,因此您只有一个传入文件:set
stderr=STDOUT
。这意味着您无法将常规输出与错误输出区分开。根据应用程序如何写入输出,这可能会接受也可能无法接受。

处理此问题的完整且复杂的方法是

select
(http://docs.python.org/library/select.html)。这使您能够以非阻塞方式进行读取:只要数据出现在
stdout
或上,就可以获取数据
stderr
。如果确实需要,我只会建议这样做。这可能在Windows中不起作用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号