Python Popen envía para procesar en stdin, recibiendo en stdout

Paso un ejecutable en la línea de comandos a mi script de python. Hago algunos cálculos y luego me gustaría enviar el resultado de estos cálculos en STDIN al ejecutable. Cuando haya terminado, me gustaría recuperar el resultado del ejecutable de STDOUT.

ciphertext = str(hex(C1)) exe = popen([sys.argv[1]], stdout=PIPE, stdin=PIPE) result = exe.communicate(input=ciphertext)[0] print(result) 

Cuando imprimo el result no obtengo nada, ni Ninguno, una línea vacía. Estoy seguro de que el ejecutable funciona con los datos, ya que he repetido lo mismo usando ‘>’ en la línea de comandos con el mismo resultado calculado previamente.

Un ejemplo de trabajo

 #!/usr/bin/env python import subprocess text = 'hello' proc = subprocess.Popen( 'md5sum',stdout=subprocess.PIPE, stdin=subprocess.PIPE) proc.stdin.write(text) proc.stdin.close() result = proc.stdout.read() print result proc.wait() 

para obtener lo mismo que ” execuable < params.file > output.file “, haga esto:

 #!/usr/bin/env python import subprocess infile,outfile = 'params.file','output.file' with open(outfile,'w') as ouf: with open(infile,'r') as inf: proc = subprocess.Popen( 'md5sum',stdout=ouf,stdin=inf) proc.wait()