Ejecutar script de línea de command bash en python

¿Es posible ejecutar un script de bash de línea de command en python? Sé de subprocess.call/check_output para ejecutar un solo command con parameters. Sin embargo, ¿cómo puedo ejecutar

for tag in `git branch -r | grep "tags/" | sed 's/ tags\///'`; do git tag -a -m"Converting SVN tags" \ `echo $tag | grep "tags/" |sed 's/.*tags\///'` \ refs/remotes/$tag done 

en Python? No quiero poner la "línea" en un script de shell y hacer que python lo llame.

¡Gracias!

Al convertir de script bash a python puede ir de dos maneras:

  1. usted se hace cargo de las llamadas al progtwig y simplemente reemplaza el process de bucle / cadena, por ejemplo, de esta manera:

     from subprocess import check_output for line in check_output('git branch -r', shell=True).split("\n"): line = line.strip() # do your replaces here, etc. leaving that for an exercise for you # run more `check_call` or `check_output` here 
  2. lo haces "de la manera correcta" y usas, por ejemplo, un module python git . Eso es inicialmente más trabajo, pero a largo ploop es beneficioso ya que obtienes más funciones lists para usar y tienes less errores que en tus "llamadas de shell rápidamente pirateadas juntas".

Editar: como sugiere acertadamente un comentarista, debe intentar evitar shell=True . En este caso, check_output(['git', 'branch', '-r']) es ciertamente mejor, en otros casos, cuando sabe que el script python se ejecutará en un sistema Linux y bajo un shell específico (por ej. bash), luego tener shell=True permite acceder a las variables de entorno especificadas en .bashrc , globbing, etc. Para una discusión detallada, consulte aquí .