ejemplos - subprocess python español
Comando Python popen Espere hasta que el comando esté terminado (4)
Deje que el comando que está tratando de pasar sea
os.system(''x'')
entonces lo encubierto a una declaración
t = os.system(''x'')
ahora el pitón estará esperando el resultado de la línea de comando para poder asignarlo a la variable t
.
Tengo un script donde lo inicio con popen un comando de shell. El problema es que el script no espera hasta que el comando popen finalice y continúa de inmediato.
om_points = os.popen(command, "w")
.....
¿Cómo puedo decirle a mi script de Python que espere hasta que el comando de shell haya terminado?
Dependiendo de cómo quiera trabajar su script, tiene dos opciones. Si desea que los comandos se bloqueen y no haga nada mientras se está ejecutando, puede usar subprocess.call
.
#start and block until done
subprocess.call([data["om_points"], ">", diz[''d'']+"/points.xml"])
Si desea hacer cosas mientras se está ejecutando o alimentar cosas en stdin
, puede usar la communicate
después de la llamada popen
.
#start and process things, then wait
p = subprocess.Popen([data["om_points"], ">", diz[''d'']+"/points.xml"])
print "Happens while running"
p.communicate() #now wait plus that you can send commands to process
Como se indica en la documentación, la wait
puede bloquearse, por lo que es aconsejable comunicarse.
Lo que estás buscando es el método de wait
.
Puedes usar un subprocess
para lograr esto.
import subprocess
#This command could have multiple commands separated by a new line /n
some_command = "export PATH=$PATH://server.sample.mo/app/bin /n customupload abc.txt"
p = subprocess.Popen(some_command, stdout=subprocess.PIPE, shell=True)
(output, err) = p.communicate()
#This makes the wait possible
p_status = p.wait()
#This will give you the output of the command being executed
print "Command output: " + output