#python #subprocess
#python #подпроцесс
Вопрос:
Я использую приведенный ниже код для открытия приложения, но что делать, если я хочу закрыть приложение.
music = subprocess.Popen(["/bin/bash", "-c", "open/System/Applications/Music.app"])
Комментарии:
1.
open
сам по себе является программой, которую можно запускать сPopen
помощью :Popen(["open", "/System/Applications/Music.app"])
.
Ответ №1:
Я бы использовал AppleScript:
> subprocess.run(["open", "/System/Applications/Music.app"])
> subprocess.run(["osascript", "-e", 'tell application "Music" to quit'])
Обратите внимание, что в отличие от Python, AppleScript требует строк в двойных кавычках.
Музыка выполняется практически независимо от вашего процесса Python; Я не знаю простого способа получить или сохранить объект, представляющий процесс. В обоих случаях мы работаем косвенно.
Сначала мы запускаем open
, который просит launchd
запустить музыку для нас. open
существует немедленно, поэтому нет смысла держать Popen
экземпляр, представляющий его, под рукой.
Когда мы закончим с музыкой, мы используем osascript
для запуска очень короткий AppleScript, который просто просит музыкальное приложение завершить работу. Например open
, osascript
завершается немедленно, и Music делает то, что мы просим, а именно exit .