我在我的闪存驱动器上设置了一个便携式环境,由 Chromium Portable、Firefox Portable 和 Python 3 组成。我正在尝试编写一个 Python 3 脚本,该脚本将启动一个 pydoc 服务器,以便在 Chromium Portable 或 Firefox Portable 中访问。如果 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 包。请帮忙?如果有必要丢弃我的代码,那没关系。我在尝试学习。提前致谢。