Лесоруб напомнил мне о том, как легкий это должно обернуть некоторые встроенные функции.
, Прежде чем Perl 5.10 Perl не имел структурной распечатки программы (говорят) как Python.
Так в Вашей локальной программе Вы могли сделать что-то как:
sub print {
print @_, "\n";
}
или добавляют в некоторой отладке.
sub print {
exists $ENV{DEVELOPER} ?
print Dumper(@_) :
print @_;
}
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()
Просто добавлю к ответу Неда выше: вы можете использовать это для перенаправления вывода на любой объект, реализующий метод записи (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 !"
Use pipe()
and write to the appropriate file descriptor.
https://docs.python.org/library/os.html#file-descriptor-operations