我在我的閃存驅動器上設置了一個可移植環境,包括Chromium Portable,Firefox Portable和Python 3.我正在嘗試編寫一個Python 3腳本,它將啓動一個pydoc服務器,以便在Chromium Portable或Firefox Portable 。如果Chromium Portable已處於活動狀態,則將打開服務器的新選項卡,如果不啓動Firefox Portable,則將從該處啓動服務器。當Chromeium 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)
這個腳本是從HOMEDRIVE的值設置爲當前的閃存驅動器盤符所以Python將永遠知道在哪裏尋找可執行文件的批處理文件啓動。我的問題是,我不知道如何實現這個過程,它將決定是否只需在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 2010-12-13 02:10:20