Estoy tratando de llamar a un script de shell en python, pero sigue informando error de canal roto (el resultado es correcto, pero no quiero ver el mensaje de error en STDERR). He identificado la causa, y puede ser reproducido como el siguiente fragmento:Python: subprocess.call tubería rota
subprocess.call('cat /dev/zero | head -c 10 | base64', shell=True)
AAAAAAAAAAAAAA ==
gato: error de escritura: Tubo roto
/dev/zero
es un flujo infinito, pero el head -c 10
solo lee 10 bytes de él y sale, luego cat obtendrá SIGPIPE debido a que el par ha cerrado el conducto. No hay un mensaje de error de canal roto cuando ejecuto el comando en shell, pero ¿por qué Python lo muestra?
El error desaparece cuando se salta el [uuoc] (https://en.wikipedia.org/wiki/ Cat_% 28Unix% 29 # Useless_use_of_cat): 'subprocess.call ('head -c 10 dev/zero | base64', shell = True)' –
@larsmans: podría poner eso como una respuesta –
@ChrisMorgan: en realidad, Yo prefiero tu respuesta. –