26 luglio 2010

Python Redirigere lo stream di Output

L' istruzione print non e altro che l' output del metodo sys.stdout.write. Infatti invocare una print equivale ad utilizzare sys.stdout.write(str(X) + '\n') in modo chiaro e comodo per l'utente. E cosa molto frequente usare questo "trucco" di redigere la visualizzazione dell' istruzione print riassegnandola a sys.stdout.

ecco un semplice esempio:

[archie@geek ~]$ python
Python 2.6.2 (r262:71600, Jun 4 2010, 18:28:04)
[GCC 4.4.3 20100127 (Red Hat 4.4.3-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> freeze = sys.stdout #variabile per riassegnare in seguito lo stdout
>>> sys.stdout = open('reg.txt', 'a') #redirezione dell' output al file : modo accodamento
>>> print 'bytes scritti su file'
#scrive il file su disco e lo chiude
>>> sys.stdout.close()
>>> sys.stdout = freeze #riassegna lo stdout originario
>>> print 'sono nel terminale'
sono nel terminale
>>> print open('reg.txt').read()
bytes scritti su file #print dal file su disco


redirigere l' output ad un' oggetto di tipo file tramite " >> ":

>>> file = open('reg.txt', 'w') #l' oggetto file
>>> print >> file, 'rediretto su file' #stampa su file
>>> file.close()
>>> print 'sono nel terminale' #ritorna al terminale
sono nel terminale
>>> print open('reg.txt').read() #print dal file su disco
rediretto su file

questo metodo di utilizzare lo stream dell' output, può rivelarsi particolarmente utile con sys.stderr nel redirigere l'output in un file tramite " >> " e visualizzare eventuali messaggi di errore.

Nessun commento: