Il 04/06/2013 17:03, Federico Figus ha scritto:
Ciao,
l'override dell'istruzione print non è possibile in python 2.x, ma lo
è in python 3.x.
Per aggirare il problema potresti definire un file-like object che
possieda almeno il metodo write, al cui interno ci implementi la
logica di scritura, ad esempio:
import sys
_stdout = sys.stdout
class FaskeStdout(object):
can_write = 1
def write(self, data):
if self.can_write:
_stdout.write(data)
sys.stdout = FakeStdout()
print "stampa sullo stdout"
sys.stdout.can_write = 0
print "non stampa sullo stdout"
La seconda soluzione sarebbe creare la tua funzione print con un alias
(e.g. print_log()) e modidicare tutto il codice con un semplice
find&replace, così potrai controllare la meglio tutta questa parte in
futuro.
ho pensato a fare un overloading perchè non e' semplice cambiare tutti i
print con un find&replace.
la riga
print "ciao mondo"
dovrebbe diventare
print_log("ciao mondo")
e l'ultima parentesi tonda chiusa non saprei proprio come inserirla...
Con il file-like object del print ha funzionato, adesso ho un flag che
funziona così:
if not flag:
print "Verbose is OFF!!!"
from overloadprint import *
sys.stdout=OverloadPrint()
dove overloading.py contiene il codice:
class OverloadPrint():
def write(self, text):
pass
Saluti,
Federico F.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python