python: altere a impressão sys.stdout para a função de impressão personalizada
Estou tentando entender como criar uma função de impressão personalizada. (usando python 2.7)
import sys
class CustomPrint():
def __init__(self):
self.old_stdout=sys.stdout #save stdout
def write(self, text):
sys.stdout = self.old_stdout #restore normal stdout and print
print 'custom Print--->' + text
sys.stdout= self # make stdout use CustomPrint on next 'print'
# this is the line that trigers the problem
# how to avoid this??
myPrint = CustomPrint()
sys.stdout = myPrint
print 'why you make 2 lines??...'
O código acima imprime isso no console:
>>>
custom Print--->why you make 2 lines??...
custom Print--->
>>>
e eu quero imprimir apenas uma linha:
>>>
1custom Print--->why you make 2 lines??...
>>>
Mas não consigo descobrir como fazer esse trabalho de impressão personalizado, eu entendo que há algum tipo de recursão que aciona a segunda saída para o console (eu uso self.write, para atribuir stdout para self.write-se!)
Como posso fazer isso funcionar? ou a minha abordagem está completamente errada ...