Я могу перенаправить stdout в Python в своего рода строковый буфер?

Лесоруб напомнил мне о том, как легкий это должно обернуть некоторые встроенные функции.

, Прежде чем Perl 5.10 Perl не имел структурной распечатки программы (говорят) как Python.

Так в Вашей локальной программе Вы могли сделать что-то как:

sub print {
     print @_, "\n";
}

или добавляют в некоторой отладке.

sub print {
    exists $ENV{DEVELOPER} ?
    print Dumper(@_) :
    print @_;
}
127
задан abyx 17 November 2009 в 07:13
поделиться

3 ответа

from cStringIO import StringIO # Python3 use: from io import StringIO
import sys

old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()

# blah blah lots of code ...

sys.stdout = old_stdout

# examine mystdout.getvalue()
189
ответ дан 24 November 2019 в 00:43
поделиться

Просто добавлю к ответу Неда выше: вы можете использовать это для перенаправления вывода на любой объект, реализующий метод записи (str) .

Это можно использовать для хорошего эффекта, чтобы "поймать" вывод stdout в приложении с графическим интерфейсом.

Вот глупый пример в PyQt:

import sys
from PyQt4 import QtGui

class OutputWindow(QtGui.QPlainTextEdit):
    def write(self, txt):
        self.appendPlainText(str(txt))

app = QtGui.QApplication(sys.argv)
out = OutputWindow()
sys.stdout=out
out.show()
print "hello world !"
34
ответ дан 24 November 2019 в 00:43
поделиться

Use pipe() and write to the appropriate file descriptor.

https://docs.python.org/library/os.html#file-descriptor-operations

3
ответ дан 24 November 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: