获取在python当前控制台输出

问题描述 投票:0回答:2

我想我的Python程序的当前控制台输出。有很多解决方案上运行外部程序时,为了获得控制台输出的,但是,我无法找到获取当前程序的控制台输出任何解决方案。我缺少的东西吗?我要寻找其Windows和Linux下的有效的解决方案。

例如:

print "Hello world"
output = get_console_output() # Returns "Hello World\n"

编辑:该解决方案应该保留控制台输出,所以只需更换标准输出将无法正常工作,作为控制台将是空的,然后

python console output
2个回答
2
投票

如果您要访问的输出,你需要的地方重定向标准输出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')

2
投票

你可以使用任何类似文件的对象覆盖sys.stdout的:

import sys
import StringIO
sys.stdout = StringIO.StringIO()

你应该也事关于使用日志模块,而不是打印的。或者干脆写一个函数,存储并打印值。

© www.soinside.com 2019 - 2024. All rights reserved.