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) > ### > > 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: > ### >
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 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. Ciao Manlio _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python