簡體   English   中英

在python中獲取當前的控制台輸出

[英]Get current console output in python

我想在 python 中獲取我的程序的當前控制台輸出。 在運行外部程序時獲取控制台輸出的解決方案有很多,但是,我找不到任何解決方案來獲取當前程序的控制台輸出。 我錯過了什么嗎? 我正在尋找一種適用於 windows 和 linux 的解決方案。

例如:

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

編輯:解決方案應保留控制台輸出,因此僅替換 stdout 將不起作用,因為控制台將為空

如果要訪問輸出,則需要將標准輸出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()

您還應該考慮使用日志記錄模塊而不是打印。 或者簡單地編寫一個存儲和打印值的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM