【问题标题】:How to get stdout into a string (Python) [duplicate]如何将标准输出转换为字符串(Python)[重复]
【发布时间】:2011-03-29 05:11:24
【问题描述】:

我需要将我通过子进程执行的进程的标准输出捕获到一个字符串中,然后将其放入我正在创建的 wx 应用程序的 TextCtrl 中。我该怎么做?

编辑:我还想知道如何确定进程何时终止

【问题讨论】:

    标签: python stdout


    【解决方案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]
      • 它会阻塞程序。
      猜你喜欢
      • 1970-01-01
      • 2012-05-19
      • 2012-01-26
      • 2011-01-12
      • 2017-01-11
      • 2011-03-31
      • 2021-05-11
      相关资源
      最近更新 更多