2010-05-29 34 views
6

Con subprocess.call o subprocess.Popen, la ejecución de un comando de shell hace que una ventana de shell aparezca y desaparezca rápidamente.Ejecución de comandos de shell sin una ventana de shell

¿Cómo puedo ejecutar el comando de shell sin la ventana del shell?

+1

¿Qué plataforma? (Suena como Windows.) –

+0

relacionado: [¿Cómo puedo ocultar la consola cuando uso os.system() o subprocess.call()?] (Http://stackoverflow.com/q/7006238/4279) – jfs

Respuesta

23

Imagino que su observación está limitada a Windows, ya que, creo, es la única plataforma en la que obtendrá ese problema de "flash de consola". Si es así, entonces el docs ofrecen el párrafo siguiente semi-útil:

El STARTUPINFO y creationflags, si dado, se pasará a la función CreateProcess() subyacente. Pueden especificar elementos como el aspecto de la ventana principal y la prioridad para el nuevo proceso. (Windows solamente )

Desafortunadamente los documentos en línea Python no reproducen la parte pertinente de los documentos de la API de Windows, así que hay que localizar los de otros lugares, por ejemplo, a partir here en MSDN que conduce here para la creationflags, y específicamente a

CREATE_NO_WINDOW 
0x08000000 

El proceso es una aplicación de consola que se está ejecutando sin ventana de la consola. Por lo tanto, el controlador de consola para la aplicación no está configurado.

Por lo tanto, la adición de creationflags=0x08000000 a su llamada Popen debería ayudar (por desgracia no tengo ninguna máquina Windows que se ejecuta en el que probar esto, por lo que tendrá que hacerlo por uno mismo).

+0

gracias por la respuesta rápida! –

+0

verificado en una máquina con Windows. ¡Gracias! –

+0

Muy bien, esto funciona! – ChristopheD

Cuestiones relacionadas