Python: subproceso y ejecución de un script bash con múltiples argumentos

¿Cómo hago para ejecutar un script bash utilizando el módulo de subproceso, al que debo dar varios argumentos?

Esto es lo que estoy usando actualmente:

subprocess.Popen(['/my/file/path/programname.sh', 'arg1 arg2 %s' % arg3], \ shell = True) 

El guión de bash parece no estar tomando ninguno de los parámetros. ¡Cualquier información es muy apreciada!

Pase los argumentos como una lista, vea el primer ejemplo de código en la documentación :

 import subprocess subprocess.check_call(['/my/file/path/programname.sh', 'arg1', 'arg2', arg3]) 

Si arg3 no es una cadena; check_call() en una cadena antes de pasar a check_call() : arg3 = str(arg3) .

 subprocess.Popen(['/my/file/path/programname.sh arg1 arg2 %s' % arg3], shell = True). 

Si usa shell = True el script y sus argumentos deben pasarse como una cadena. Cualquier otro elemento en la secuencia de argumentos se tratará como argumentos al shell.

Puede encontrar los documentos completos en http://docs.python.org/2/library/subprocess.html#subprocess.Popen .

Hola, sé que esta solución es bastante tarde, pero podría ayudar a alguien.

ejemplo:

 import subprocess pass_arg=[] pass_arg[0]="/home/test.sh" pass_arg[1]="arg1" pass_arg[2]="arg2" subprocess.check_call(pass_arg) 

El ejemplo anterior proporciona arg1 y arg2 como parámetros para el script de shell test.sh

Esencialmente, el subproceso espera una matriz. Por lo tanto, podría rellenar una matriz y proporcionarla como un parámetro.

Un ejemplo más, que no está incluido en todos los anteriores,

subprocess.Popen(['/your/script.sh %s %s %s' %(argument1,argument2,argument3)], shell = True)

Tenga en cuenta que, cuando escribe %(argument1,argument2,argument3) , no debe haber ningún espacio entre % y ( por ejemplo, % (argument1,argument2,argument3) no es válido.

Se te olvidó agregar el nombre de args .

 subprocess.Popen(args=['./test.sh', 'arg1 arg2 %s' % arg3], shell=True)