Chromium Portable、Firefox Portable、および Python 3 で構成されるフラッシュ ドライブにポータブル環境をセットアップしました。Chromium Portable または Firefox Portable でアクセスする pydoc サーバーを起動する Python 3 スクリプトを作成しようとしています。Chromium Portable が既にアクティブになっている場合は、サーバーへの新しいタブが開きます。そうでない場合は、Firefox Portable が起動され、そこからサーバーにアクセスします。Chromium Portable\chrome.exe と Firefox Portable のすべてのプロセスが終了したら、サーバーをシャットダウンする必要があります。次のコードは、これまでに書いたものです。
import subprocess
import os
drive = os.environ['HOMEDRIVE']
def launch_browser():
pass
def launch_pydoc():
pythonw = drive + '\PortableApps\PortablePython_3x\App\pythonw.exe'
doc_args = drive + '\PortableApps\PortablePython_3x\App\Lib\pydoc.py -p 50000'
spDoc = subprocess.Popen(pythonw+' '+doc_args)
def launch_chrome():
chrome = drive + '\PortableApps\ChromiumPortable\App\Chrome-bin\chrome.exe'
chrome_args = r'http://localhost:50000/ --user-data-dir="C:\Users\Owner\AppData\Roaming\ChromePortable\nathan" --new-tab'
spChrome = subprocess.Popen(chrome+' '+chrome_args)
def launch_mozilla():
mozilla = drive + '\PortableApps\FirefoxPortableNightly\FirefoxPortable.exe'
mozilla_args = 'http://localhost:50000/'
spMozilla = subprocess.Popen(mozilla+' '+mozilla_args)
このスクリプトは、HOMEDRIVE の値を現在のフラッシュ ドライブ文字に設定するバッチ ファイルから起動されるため、Python は実行可能ファイルを探す場所を常に認識します。私の問題は、単に Chromium Portable で新しいタブを開くか、Firefox Portable を開き、さらにブラウザーの各プロセスが閉じられた後にサーバーをシャットダウンするかを決定するプロセスを実装する方法がわからないことです。サブプロセスなどに関する多くのリンク、特に複数の子プロセスを待機する方法、サブプロセスを強制終了する方法、 Python プログラムの終了時にサブプロセスが停止していることを確認する方法について調べました。. Python 3 のコピーに pywin32、wmi、comtypes、および psutil パッケージをインストールしました。助けてください。私のコードを破棄する必要がある場合は、問題ありません。私は学ぶことをしようとしています。前もって感謝します。