Solución:
Para resumir y complementar las respuestas existentes:
-
python.exe
es una aplicación de consola (terminal) para lanzar scripts de tipo CLI.- A menos que se ejecute desde una ventana de consola existente,
python.exe
abre una nueva ventana de consola. -
Flujos estándar
sys.stdin
,sys.stdout
ysys.stderr
están conectado a la ventana de la consola. -
La ejecución es sincrónico cuando se lanza desde un
cmd.exe
o ventana de la consola de PowerShell: Vea el primer comentario de eryksun a continuación.- Si se creó una nueva ventana de consola, permanece abierta hasta que finaliza el script.
- Cuando se invoca desde una ventana de consola existente, la solicitud se bloquea hasta que finaliza la secuencia de comandos.
- A menos que se ejecute desde una ventana de consola existente,
-
pythonw.exe
es una aplicación GUI para lanzar guiones GUI / no-UI-at-all.- SIN ventana de consola está abierto.
- La ejecución es asincrónico:
- Cuando se invoca desde una ventana de consola, el script es simplemente lanzado y el mensaje regresa de inmediato, ya sea que el script aún se esté ejecutando o no.
-
Flujos estándar
sys.stdin
,sys.stdout
ysys.stderr
están No disponible.-
Precaución: A menos que tome pasos adicionales, esto tiene efectos secundarios potencialmente inesperados:
- Excepciones no controladas hacer que el guión abortar silenciosamente.
-
En Python 2.x, simplemente tratando de usar
print()
puede hacer que eso suceda (en 3.x,print()
simplemente no tiene ningún efecto). - Para evitar que desde dentro de su guión, y para obtener más información, consulte esta respuesta mía.
-
Ad hoc, puedes usar redirección de salida:Gracias, @handle.
pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
(de PowerShell:
cmd /c pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
) para capturar la salida stdout y stderr en archivos.
Si está seguro de que el uso deprint()
es la única razón por la que su script falla silenciosamente conpythonw.exe
, y no está interesado en la salida estándar, use el comando @ handle de los comentarios:
pythonw.exe yourScript.pyw 1>NUL 2>&1
Consideración: Esta técnica de redirección de salida no no trabajar al invocar*.pyw
guiones directamente (en lugar de pasar la ruta del archivo de secuencia de comandos apythonw.exe
). Vea el segundo comentario de eryksun y sus seguimientos a continuación.
-
Precaución: A menos que tome pasos adicionales, esto tiene efectos secundarios potencialmente inesperados:
Usted puede controlar cuál de los ejecutables ejecuta su script de forma predeterminada – como cuando se abre desde Explorer – por elegir la extensión de nombre de archivo correcta:
-
*.py
los archivos están asociados (invocados) de forma predeterminada conpython.exe
-
*.pyw
los archivos están asociados (invocados) de forma predeterminada conpythonw.exe
Si no desea que aparezca una ventana de terminal cuando ejecute su programa, use pythonw.exe
;
De lo contrario, use python.exe
Respecto al error de sintaxis: print
ahora es una función en 3.x
Entonces usa en su lugar:
print("a")
Vea aquí: http://docs.python.org/using/windows.html
pythonw.exe “Esto suprime la ventana de terminal al inicio”.