Is there any way to run a Python script in Windows XP without a command shell momentarily appearing? I often need to automate WordPerfect (for work) with Python, and even if my script has no output, if I execute it from without WP an empty shell still pops up for a second before disappearing. Is there any way to prevent this? Some kind of output redirection perhaps?
6 Answers
pythonw.exe will run the script without a command prompt. The problem is that the Python interpreter, Python.exe, is linked against the console subsystem to produce console output (since that's 90% of cases) -- pythonw.exe is instead linked against the GUI subsystem, and Windows will not create a console output window for it unless it asks for one.
This article discusses GUI programming with Python, and also alludes to pythonw.exe. It also helpfully points out that if your Python files end with .pyw instead of .py, the standard Windows installer will set up associations correctly and run your Python in pythonw.exe.
In your case it doesn't sound like a problem, but reliance upon pythonw.exe makes your application Windows-specific -- other solutions exist to accomplish this on, say, Mac OS X.
I tried methods above, however, a console stills appears and disappears quickly due to a Timer in my script. Finally, I found following code:
import ctypes
import os
import win32process
hwnd = ctypes.windll.kernel32.GetConsoleWindow()
if hwnd != 0:
ctypes.windll.user32.ShowWindow(hwnd, 0)
ctypes.windll.kernel32.CloseHandle(hwnd)
_, pid = win32process.GetWindowThreadProcessId(hwnd)
os.system('taskkill /PID ' + str(pid) + ' /f')
Quite easy in Win10:
Open a PowerShell and type this commands:
type nul > openWindowed.vbs
type nul > main.py
notepad openWindowed.vbs
Paste the next into your openWindowed.vbs file:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Users\path\to\main.py" & Chr(34), 0
Set WshShell = Nothing
The .vbs file will execute your main.py file without open a cmd. I use this a lot to the make.py files, because I don't know cmake scripting.
I had the same problem. I tried many options, and all of them failed But I tried this method, and it magically worked!!!!!
So, I had this python file (mod.py) in a folder, I used to run using command prompt
When I used to close the cmd the gui is automatically closed.....(SAD),
So I run it as follows
C:\....>pythonw mod.py
Don't forget pythonw "w" is IMP
Change the file extension to .pyw and add the following line (changed accordingly to your python version) to the beginning of your script:
#! c:\\Users\\sohra\\AppData\\Local\\Programs\\Python\\Python38\\pythonw.exe
Now, if you double click on the file, it will be executed by pythonw.exe without the console window.