ejecutar un shell-script desde el subproceso Python

Necesito llamar a un shellscript de python. El problema es que el shellscript hará un par de preguntas a lo largo del camino hasta que termine.

¡No puedo encontrar una manera de hacerlo usando subprocess ! ( pexpect parece un poco pexpect ya que solo necesito iniciarlo y enviarle un par de SÍ)

¡POR FAVOR, no sugiera formas que requieran modificación al shell-script!

Usando la biblioteca de subprocess , puede decirle a la clase Popen que desea administrar la entrada estándar del proceso de la siguiente manera:

 import subprocess shellscript = subprocess.Popen(["shellscript.sh"], stdin=subprocess.PIPE) 

Ahora shellscript.stdin es un objeto similar a un archivo al que puedes llamar ” write :

 shellscript.stdin.write("yes\n") shellscript.stdin.close() returncode = shellscript.wait() # blocks until shellscript is done 

También puede eliminar la salida estándar y el error estándar de un proceso configurando stdout=subprocess.PIPE y stderr=subprocess.PIPE , pero no debe usar PIPEs tanto para la entrada estándar como para la salida estándar, ya que podría producirse un interlocking. (Consulte la documentación ). Si necesita canalizar y canalizar, use el método de communicate lugar de los objetos tipo archivo:

 shellscript = subprocess.Popen(["shellscript.sh"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = shellscript.communicate("yes\n") # blocks until shellscript is done returncode = shellscript.returncode