私はChromium Portable、Firefox Portable、Python 3からなる私のフラッシュドライブにポータブル環境をセットアップしました。私はChromium PortableまたはFirefox Portableのいずれかにアクセスするpydocサーバを起動するPython 3スクリプトを書こうとしています。 Chromium Portableが既にアクティブになっている場合は、サーバーへの新しいタブが開きます。Firefox Portableが起動されていない場合は、そこからサーバーにアクセスします。 Chromium Portable \ chrome.exeおよびFirefox Portableのすべてのプロセスが終了したら、サーバーをシャットダウンする必要があります。次のコードはこれまでに書いたものです。ポータブルブラウザがシャットダウンされたときに閉じるポータブルpydocサーバを設定するにはどうすればよいですか?
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)
このスクリプトはPythonが常にどこの実行可能ファイルを検索する場所を知っているので、現在のフラッシュドライブ文字にHOMEDRIVEの値を設定するバッチファイルから起動されます。私の問題は、Chromium Portableの新しいタブを開くか、Firefox Portableを開くか、ブラウザが閉じられても各プロセスの後にサーバーをシャットダウンするかどうかを決定するプロセスを実装する方法がわからないことです。私はサブプロセスに関連する多くのリンク、特にhow to wait for multiple child processes、how to kill a subprocess、ensuring subprocesses are dead on exiting python programを見てきました。 Python 3のコピーにpywin32、wmi、comtypes、psutilパッケージをインストールしました。どうすればいいですか?私のコードを破棄する必要があるならOKです。私は学ぶことをしようとしています。前もって感謝します。
ありがとうございます!それが私の問題の大部分を解決しました。私は残りの部分を把握できるかどうかを見ていきます。 – iancormac84