[Python-es] ¿Hacer un | en plan bash con Subprocess.Popen?

Miguel de Dios Matias tres.14159 en gmail.com
Lun Jun 4 20:32:29 EDT 2018


Buenas.

Jugando image imagick he encontrado este script en bash para generar iconos
de pixeles aleatorios:

mx=8;my=8;head -c "$((3*mx*my))" /dev/urandom | convert -depth 8 -size
"${mx}x${my}" RGB:- /tmp/random.png


Y por aprender quería pasarlo a Python, pero no he sido capaz.

#!/usr/bin/python3
import subprocess

result = subprocess.run(['head', '-c {}'.format(3 * size * size),
'/dev/urandom'], stdout=subprocess.PIPE)print('{}'.format(result))
result = subprocess.run(['convert', '-depth 8',
'-size{}x{}'.format(size, size), 'RGB:-', '/tmp/random.png'],
stdin=result.stdout, stdout=subprocess.PIPE)


Falla y da un error de que:
convert-im6.q16: unrecognized option `-size8x8' @
error/convert.c/ConvertImageCommand/2969.

Algo estoy haciendo mal, pero no se el que...no se si sera que el stdout
del primer proceso es bytes...

Por cierto he puesto la pregunta en stackoverflow por si alguien la quiere
contestar ahí y le doy un voto.

https://stackoverflow.com/questions/50682514/when-python3-chain-two-subprocess-run-such-as-bash-pipe-get-error-attributeer

Saludos.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20180605/81292347/attachment.html>


Más información sobre la lista de distribución Python-es