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)
이 스크립트는 파이썬이 항상 어디 실행 파일을 찾아하는 알 수 있도록 현재 플래시 드라이브 문자 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을 보았다. 파이썬 3의 복사본에 pywin32, wmi, comtypes 및 psutil 패키지를 설치했습니다. 제발 도와주세요? 내 코드를 버려야 할 필요가 있다면 괜찮습니다. 나는 배우려고 노력하고 있어요. 미리 감사드립니다.
감사합니다. 그게 내 문제의 대부분을 해결했습니다. 내가 나머지를 알아낼 수 있는지 알게 될거야. – iancormac84