os.system() および subprocess.call() でコンソール ウィンドウを非表示にする
os.system() または subprocess.call を使用する場合() コマンドを実行すると、煩わしいコンソール ウィンドウがポップアップ表示される場合があります。これにより、ワークフローが中断され、スクリプトがプロフェッショナルではないように見える可能性があります。幸いなことに、この望ましくない動作を抑制する方法があります。
コンソール ウィンドウを非表示にするには、subprocess モジュールで使用できる STARTUPINFO 構造体を利用できます。その方法は次のとおりです:
si = subprocess.STARTUPINFO() si.dwFlags |= subprocess.STARTF_USESHOWWINDOW #si.wShowWindow = subprocess.SW_HIDE # default subprocess.call('taskkill /F /IM exename.exe', startupinfo=si)
または、特定の作成フラグを設定して、最初からコンソール ウィンドウが作成されないようにすることもできます:
CREATE_NO_WINDOW = 0x08000000 subprocess.call('taskkill /F /IM exename.exe', creationflags=CREATE_NO_WINDOW)
これらのアプローチでも、結果は次のようになります。 I/O 用のハンドルを備えたコンソール プロセスですが、非表示になり、ユーザー インターフェイスに干渉しません。
詳細については、解決策として、子プロセスにコンソールをまったく持たせないように強制できます:
DETACHED_PROCESS = 0x00000008 subprocess.call('taskkill /F /IM exename.exe', creationflags=DETACHED_PROCESS)
この場合、子の標準ハンドルは 0 になりますが、subprocess.DEVNULL のようなファイルまたはパイプにリダイレクトできます。 .
以上がos.system() と subprocess.call() の使用時にコンソール ウィンドウがポップアップしないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。