Tengo el siguiente código de Python:

os.system("C:/Python27/python.exe C:/GUI/TestGUI.py")
sys.exit(0)

Ejecuta bien el comando y aparece una ventana emergente. Sin embargo, no sale del primer script. Simplemente permanece allí, y eventualmente tengo que forzar a matar el proceso. No se producen errores. ¿Que esta pasando?

10
user825286 24 jul. 2011 a las 17:41

4 respuestas

La mejor respuesta

En lugar de os.system usa subprocess.Popen

Esto ejecuta un comando y no lo espera y luego sale:

import subprocess
import sys

subprocess.Popen(["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"])
sys.exit(0)

Tenga en cuenta que os.system(command) como:

p = subprocess.Popen(command)
p.wait()
16
Dan D. 24 jul. 2011 a las 13:52

Sugiero usar os._exit en lugar de sys.exit, ya que sys.exit no sale de un programa pero aumenta el nivel de excepción o sale de un hilo. os._exit(-1) cierra el programa completo

0
Eric Leschinski 21 jul. 2015 a las 01:14
import sys ,subprocess

subprocess.Popen(["C:/Python27/python.exe", "C:/GUI/TestGUI.py"])
sys.exit(0)

Abra desde el módulo de subproceso lo que está buscando.

0
Eric Leschinski 21 jul. 2015 a las 01:15

Teclado Las interrupciones y las señales solo son vistas por el proceso (es decir, el hilo principal). Si su comando anidado se bloquea debido a algún tipo de bloque de lectura o escritura de archivos, no podrá salir del programa utilizando ningún comando del teclado.

¿Por qué se abre una solo lectura de un bloque de tuberías con nombre?

Si no puede eliminar la fuente del bloque de disco, entonces una forma es envolver el proceso en el hilo para que pueda forzarlo a matarlo. Pero si hace esto, deja la oportunidad de archivos a medio escribir y corruptos en el disco.

1
Community 23 may. 2017 a las 11:54