我想我的Python程序的当前控制台输出。有很多解决方案上运行外部程序时,为了获得控制台输出的,但是,我无法找到获取当前程序的控制台输出任何解决方案。我缺少的东西吗?我要寻找其Windows和Linux下的有效的解决方案。
例如:
print "Hello world"
output = get_console_output() # Returns "Hello World\n"
编辑:该解决方案应该保留控制台输出,所以只需更换标准输出将无法正常工作,作为控制台将是空的,然后
如果您要访问的输出,你需要的地方重定向标准输出stdout
。您可以使用StringIO
这个例如:
from cStringIO import StringIO
import sys
sys.stdout = buffer = StringIO()
print "Hello World"
# get output via: buffer.getvalue()
如果您更希望输出到一个文件,你可以,而不是直接重定向到一个文件:
import sys
sys.stdout = open('output.txt', 'w')
print 'Hello World'
编辑:如果你想输出附加(按评论)登录,我建议一个自定义类:
import sys
class Log(object):
def __init__(self):
self.orgstdout = sys.stdout
self.log = open("log.txt", "a")
def write(self, msg):
self.orgstdout.write(msg)
self.log.write(msg)
sys.stdout = Log()
print('Hello World')
你可以使用任何类似文件的对象覆盖sys.stdout的:
import sys
import StringIO
sys.stdout = StringIO.StringIO()
你应该也事关于使用日志模块,而不是打印的。或者干脆写一个函数,存储并打印值。