如何将stdout输出到字符串中(Python)

3
我需要捕获通过子进程执行的过程的标准输出,并将其放入我创建的wx应用程序的TextCtrl中。如何实现?
编辑:我还想知道如何确定进程何时终止。
2个回答

10

来自subprocess文档:

from subprocess import *
output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]

output = subprocess.Popen("echo hello", stdout=subprocess.PIPE).communicate()[0] 会出现一个错误,提示“找不到指定的文件”,这是什么问题? - kettlepot
1
如果你想在字符串中执行整个命令,你需要传递 shell=True。否则,你需要将命令和参数作为字符串列表传递:subprocess.Popen(["echo", "hello"], stdout=subprocess.PIPE).communicate()[0] - Walter Mundt
它将会阻塞程序。 - towry

2
请查看subprocess模块。 http://docs.python.org/library/subprocess.html 它允许您执行与shell中相同的输入和输出重定向操作。
如果您尝试重定向当前执行脚本的stdout,那只需要获取正确的文件句柄即可。大概记得stdin是0,stdout是1,stderr是2,但请再次确认。在这一点上我可能是错误的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接