Long story short: pythonw.exe does nothing, python.exe accepts nothing (which one should I use?)
test.py:
print \"a\"
To summarize and complement the existing answers:
python.exe is a console (terminal) application for launching CLI-type scripts.
python.exe opens a new console window.sys.stdin, sys.stdout and sys.stderr are connected to the console window.Execution is synchronous when launched from a cmd.exe or PowerShell console window: See eryksun's 1st comment below.
pythonw.exe is a GUI app for launching GUI/no-UI-at-all scripts.
sys.stdin, sys.stdout and sys.stderr are NOT available.
print() can cause that to happen (in 3.x, print() simply has no effect).pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txtcmd /c pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt) to capture stdout and stderr output in files.print() is the only reason your script fails silently with pythonw.exe, and you're not interested in stdout output, use @handle's command from the comments:pythonw.exe yourScript.pyw 1>NUL 2>&1*.pyw scripts directly (as opposed to by passing the script file path to pythonw.exe). See eryksun's 2nd comment and its follow-ups below.You can control which of the executables runs your script by default - such as when opened from Explorer - by choosing the right filename extension:
*.py files are by default associated (invoked) with python.exe*.pyw files are by default associated (invoked) with pythonw.exe