Il 24/10/09 15.45, Manlio Perillo ha scritto:
> Matteo Bertini ha scritto:
>    
>> Supponiamo di voler scrivere uno script python che consuma sys.stdin e
>> scrive su sys.stdout, ad esempio:
>>
>> ###
>> $ cat echo.py
>> import sys
>> for line in sys.stdin:
>>       sys.stdout.write(line)
>> ###
>>      
> Su Python 2.5.4, Debian Squeeze, ottengo invece (sempre casualmente):
>
> Traceback (most recent call last):
>    File "<string>", line 1, in<module>
> IOError: [Errno 32] Broken pipe
>    
questo è un errore mio nell'esempio (ho due processi python a cui si 
blocca stdout), meglio:

$ python -c "for x in range(200): print 'line'*(x+1)" | sort | python 
echo.py | head -5
> oppure:
> close failed: [Errno 32] Broken pipe
>    
>> Ho provato un po' a giocare con try except senza però beccare il punto
>> giusto...
>>
>> Suggerimenti?
>>      
> Quale è il problema che hai con questo comportamento?
> Comunque io non sono riuscito a trovare il metodo per non far chiudere
> il file descriptor nel distruttore.
>    
banalmente usare uno scripy python in una pipeline bash come farei con 
sort, uniq, cat... senza output spurio.

Ovvio che in alcuni casi serve avere una eccezione ma mi immagino che ci 
sia anche un modo facile per ignorarla!

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a