[Python] script bash-pipe compatibile

Matteo Bertini matteo a naufraghi.net
Sab 24 Ott 2009 14:32:38 CEST


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)
###

Purtroppo l'implementazione banale non si accoppia bene con altri tools 
tipo 'head':

###
$ python -c "for x in range(200): print 'line'*(x+1)" | python echo.py | 
head -5
line
lineline
linelineline
linelinelineline
linelinelinelineline
Traceback (most recent call last):
   File "echo.py", line 5, in <module>
     sys.stdout.write(line)
IOError: [Errno 32] Broken pipe
close failed in file object destructor: <---------- da qua in poi a 
volte c'č a volte no
Error in sys.excepthook:

Original exception was:
###

Ho provato un po' a giocare con try except senza perņ beccare il punto 
giusto...

Suggerimenti?
Matteo Bertini



Maggiori informazioni sulla lista Python