Pythonで特定のアプリケーションを起動する方法

環境

  • Windows 10
  • Python 3.10.1
  • VSCode

使用するソースコード

以下の公開リポジトリに置いています

GitHub - masayan1126/tao-py-py: pythonリポジトリ
pythonリポジトリ. Contribute to masayan1126/tao-py-py development by creating an account on GitHub.

実装

  • subprocessモジュールを使用する
  • Popen・runどちらでもアプリを起動可能
  • アプリのファイルパスを引数に渡すと、そのアプリが起動する
  • Popenは非同期、runは同期処理

shared\Application\open_desktop_app_service.py

import subprocess

class OpenDesktopAppService:
    def execute(self, app_path):
        # 非同期処理
        subprocess.Popen(app_path)
        # 同期処理(前の処理を待ってから次の処理へ)
        subprocess.run(app_path)

呼び出し

packages\open_one_password\main.py

from shared.Application.open_desktop_app_service import OpenDesktopAppService

OpenDesktopAppService().execute(
    "C:\\Users\\nishigaki\\AppData\\Local\\1Password\\app\\7\\1Password.exe"
)

ちなみに、既定のアプリで起動することも可能(OSごとに処理を分ける必要有り)

import subprocess
import platform
from shared.Enums.os_type import OsType

class OpenDesktopAppService:
    def execute(self, app_path):
        if platform.system() == "Windows":
            os = OsType.WINDOWS
        elif platform.system() == "Darwin":
            os = OsType.WINDOWS
        else:
            os = OsType.LINUX

        match os:
            case OsType.WINDOWS:
                subprocess.Popen(["start",app_path])
            case OsType.DARWIN:
                subprocess.Popen(["open", app_path])
            case OsType.LINUX:
                subprocess.Popen(["see", app_path])
            case _:
                pass

Python学習におすすめの書籍

独習Python/山田祥寛【3000円以上送料無料】
bookfan 1号店 楽天市場店
¥ 3,300(2022/02/05 17:20時点)
タイトルとURLをコピーしました