我正在编写一个脚本,如果我说“打开 vlc”,那么它应该打开 vlc 应用程序,如果我说“打开 chrome”,那么它应该打开 google chrome。为此,我尝试了以下方法,但我遇到了权限被拒绝问题
,而且我所做的方式是手动处理每个应用程序。有没有其他方法可以打开任何 Mac 应用程序?
if 'open vlc' in query:
subprocess.call(['/Applications/VLC.app'])
if 'open chrome' in query:
subprocess.call(['/Applications/Google Chrome.app'])
# open system preferences, notes as well
最佳答案
OS X 使用的 Bash 终端实际上具有 open
命令,该命令应该与子进程一起使用:
subprocess.call(["open", "-a", "ApplicationName"])
根据我的经验,这使用 /Applications/
作为应用程序的默认位置。另请参阅the man
page for the open
command .
就您而言,我建议您制作一个字典或在您的程序中输入有效的应用程序名称,这样可以输出程序的实际可执行名称:
valid_programs = {
"vlc": "VLC"
"chrome": "Google Chrome"
}
要制作通用的“打开”语句,您可以使用正则表达式来识别命令的形式并捕获它们尝试打开的名称,然后与 valid_programs
交叉引用:
import re
...
app_name_query = re.match(r"open (.*)\b", query):
if app_name_query:
try:
subprocess.call(["open", "-a", valid_programs[app_name_query.group(1)]])
except KeyError:
print(f"I didn't recognize the program {app_name_query.group(1)}!")
(您可能需要稍微更改正则表达式调用以匹配您的查询使用的任何格式 - see the documentation 有关如何执行此操作的详细信息)
关于python - 从 python 脚本打开 mac 中的任何应用程序,如 vlc、chrome、终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57077871/