[Python] Python e redirezione output
Nicola Larosa
nico a tekNico.net
Mer 18 Maggio 2011 15:33:46 CEST
Valerio Pachera wrote:
> Ho notato un comportamento piuttosto ambiguo di python 2.5 su debian
> lenny.
Nel senso che non l'hai notato su altre versioni? O hai provato solo quella?
> Un semplice script con un ciclo infinito e uno sleep di 60 secondi
> che stampa la data ed ora attuali.
>
> script.py >> /var/log/myscript.log 2>&1
>
> Se provo a visualizzare il contenuto del file tramite cat o less lo
> vedo vuoto.
> Se interrompo lo script tramite ctrl+c, vedo comparire i print delle
> deta ed il trace back del ctrl+c.
Le deta? ;-)
> A dire il vero, non sempre fa così. A volte, il file di log risulta
> leggibile (cioè vedo i print delle date) ma, ad un certo punto, le
> fate smettono di essere scritte.
Le fate? ;-)
> Il processo python è ancora attivo.
> Sembra proprio che si interrompa la redirezione.
> Nota: non c'è logrotate su quel file di log.
Sembra il buffering, prova a passare l'opzione "-u" al comando:
$ python -u script.py >> /var/log/myscript.log 2>&1
> Un mio amico consiglia di scrivere i file di log damite l'oggetto file
> di python:
> f = open('/var/log/myscript.log')
>
> Questa soluzione però non mi entusiasma.
Se fai così, devo chiamare f.flush() dopo f.write(), o meglio ancora
usare il modulo standard "logging", anzi è probabilmente il modo migliore
in generale.
--
Nicola Larosa - http://www.tekNico.net/
Articles in the literature of procrastination often allude
to the author's own problems with finishing the piece.
(This article will be no exception.)
- James Surowiecki, October 2010
Maggiori informazioni sulla lista
Python