プロセスをバックグラウンドで開いて対話したいが、このプロセスはLinuxとWindowsの両方で不可視でなければならない。これは、Linuxでは有効ではありませんしながら、Windowsでは、あなたは、STARTUPINFOでいくつかのものをしなければならない。隠しウィンドウ付きのクロスプラットフォームサブプロセス
ValueError: startupinfo is only supported on Windows platforms
は、各OS用の別々のpopenのコマンドを作成するよりも簡単な方法はありますか?
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(command, startupinfo=startupinfo)
if os.name == 'posix':
proc = subprocess.Popen(command)
Aha。私はstartupinfo = ''を試していて、うまくいかなかった。これは私が探していた答えです。 – endolith
私はちょうどそれらのエラーメッセージを生成する方法を見るためにサブプロセスコードを見て、startupinfoがNoneでないかどうかを確認します。これはPythonのように –
です。 'STARTF_SHOWWINDOW'を設定した場合、' wShowWindow'のメンバも'startupinfo'を' SW_ * '定数の1つに置き換えます。このメソッドは、実際に 'wShowWindow'フラグを実行して実行するプログラムに依存します。そうする必要はありません。 –