web-dev-qa-db-ja.com

Windowsコンソールが表示されない状態でPythonスクリプトを実行

WindowsでPythonスクリプトを実行する方法はありますかXPコマンドシェルが一時的に表示されることはありませんか?PythonでWordPerfectを自動化する必要があります)また、スクリプトに出力がない場合でも、WPなしで実行すると、消える前に空のシェルが1秒間ポップアップします。これを防ぐ方法はありますか?たぶん?

56
twneale

pythonw.exeは、コマンドプロンプトなしでスクリプトを実行します。問題は、PythonインタープリターであるPython.exeがコンソールサブシステムにリンクされてコンソール出力を生成することです(ケースの90%であるため)-代わりに、pythonw.exeがGUIサブシステムにリンクされます。 Windowsは、要求されない限り、コンソール出力ウィンドウを作成しません。

この記事 PythonでのGUIプログラミングについて説明し、pythonw.exeを暗示しています。また、Pythonファイルが.pywの代わりに.pyで終わる場合、標準のWindowsインストーラーが関連付けを正しく設定し、Pythonを実行することも指摘します。 pythonw.exeで。

あなたの場合、それは問題のようには聞こえませんが、pythonw.exeに依存することで、アプリケーションはWindows固有になります。たとえば、Mac OS Xでこれを実現する他のソリューションが存在します。

94
Jed Smith

ファイルに「.pyw」拡張子を付けて名前を付けると、windowsはpythonw.exeインタープリターを使用してそれらを実行します。これは、スクリプトを実行するためのDOSコンソールを開きません。

25
Peter Shinners

上記の方法を試しましたが、スクリプトのタイマーのためにコンソールがすぐに表示され、すぐに消えます。最後に、次のコードを見つけました。

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')
6
W.Leto