/ / ¿Cómo hacer os.execv () en Python en Windows sin desconectarse de la consola? - Python, windows, cmd, exec

¿Cómo hacer os.execv () en Python en Windows sin desconectarse de la consola? - Python, windows, cmd, exec

Estoy usando Python 2.6 en Windows 7. Tengo el archivo .cmd de Windows que invoca a Python para ejecutar el servidor web CherryPy (versión 3.1.2). Comienzo este archivo .cmd ejecutándolo en el indicador en un shell de Windows CMD. Cuando CherryPy nota que uno de sus archivos dependientes ha cambiado, se reinicia. Hay un par de problemas que surgen en esta configuración en Windows, porque la invocación que CherryPy usa para reiniciarse es

os.execv(sys.executable, args)

pero no puede invocar el ejecutable de Python en el archivo .cmd. He logrado evitar ese problema a través de varios ejercicios de gimnasia de Python, y ahora lo tengo reiniciando llamando (esencialmente)

os.execv(sys.argv[0], args)

Pero el proceso reiniciado se separa del teclado; cogerá Ctrl-C, y luego me preguntan

Terminate batch job (Y/N)?

pero el tipo Y o N I no es capturado por el archivo .cmd de terminación, sino por el shell de CMD de Windows, y responde

"Y" is not recognized as an internal or external command, operable program or batch file.

Entonces, ¿cómo configuro las cosas en Windows para mantener el proceso reiniciado en lo que "llamaría" el primer plano "en Unix?

Respuestas

-3 para la respuesta № 1

Puedes usar el método subprocess.call como este ejemplo

import subprocess

retcode = subprocess.call(["ls", "-l"])

Consulte este enlace para obtener más información sobre la clase de subproceso:

subproceso - gestión de subproceso