如何将标准输出转换为字符串(Python)[重复]
Posted
技术标签:
【中文标题】如何将标准输出转换为字符串(Python)[重复]【英文标题】:How to get stdout into a string (Python) [duplicate] 【发布时间】:2011-03-29 05:11:24 【问题描述】:我需要将我通过子进程执行的进程的标准输出捕获到一个字符串中,然后将其放入我正在创建的 wx 应用程序的 TextCtrl 中。我该怎么做?
编辑:我还想知道如何确定进程何时终止
【问题讨论】:
【参考方案1】:看一下子流程模块。
http://docs.python.org/library/subprocess.html
它允许您执行许多可以在 shell 中执行的相同输入和输出重定向。
如果您尝试重定向当前执行脚本的标准输出,只需获取正确的文件句柄即可。在我的脑海中,stdin 是 0,stdout 是 1,stderr 是 2,但请仔细检查。在这一点上我可能是错的。
【讨论】:
【参考方案2】:来自subprocess documentation:
from subprocess import *
output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]
【讨论】:
output = subprocess.Popen("echo hello", stdout=subprocess.PIPE).communicate()[0] 给出“无法找到指定文件”的错误;有什么问题? 如果你想在一个字符串中执行整个命令,你必须通过shell=True
。否则,您需要将命令和参数作为字符串列表传递:subprocess.Popen(["echo", "hello"], stdout=subprocess.PIPE).communicate()[0]
它会阻塞程序。以上是关于如何将标准输出转换为字符串(Python)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python 将 MongoDB 的 bsondump 转换为 JSON?