在 Mac 终端上找到“reminder.app”的路径非英文本地化

问题描述

我在 Big Sur 11.2.2 上使用 Macbook Air,语言设置为日语。

我试图在 Python 3.8.5 上使用 subprocess.Popen( ) 启动“reminder.app”。交互式外壳。但是,即使我使用指定的日语应用程序名称(以及 Calculator.app 、 Dictionary.app 和许多其他以日语应用程序名称显示的应用程序名称),我也无法启动 Reminders.app。但是,我可以启动我安装的应用。

>>> import subprocess
>>> subprocess.Popen(['open','/Applications/Reminders.app/'])
<subprocess.Popen object at 0x7ffa8e233e80>
The file /Applications/Reminders.app does not exist.

>>> subprocess.Popen(['open','/Applications/リマインダー.app/']) # Japanese name of app
<subprocess.Popen object at 0x7ffa8e233d60>
The file /Applications/リマインダー.app does not exist.

subpsubprocess.Popen(['open','/Applications/Safari.app/'])
<subprocess.Popen object at 0x7ffa8e233bb0>
# success!

我已经使用 Finder 进行了检查,我正在寻找的所有应用程序都显示在 GUI 界面中,尽管给出了日文名称。但是,即使使用 ls -a,也无法在终端命令行上找到或操作这些应用。

如何找到提醒应用程序的路径,以便将其与 subprocess.Popen() 一起使用?

是否因为我使用的是非英语系统语言而无法这样做?

解决方法

使用这个命令:

find / -xdev -name Reminders.app 2> /dev/null

你会发现:/System/Applications/Reminders.app

,

如果你想启动它,而不仅仅是找到它,你可以试试这个命令行:

osascript -e 'tell application "Reminders" to activate'

不知道能不能代替日文名,不过值得一试。所以来自 Python:

import os
os.system('osascript -e \'tell application \"Reminders\" to activate\'')

import subprocess
subprocess.Popen(['/usr/bin/osascript','-e','tell application \"Reminders\" to activate'])

osascript 命令基本上是在单引号中运行小 AppleScript。我没有尝试过做任何更复杂的事情,但我认为,作为一个 Apple 程序,它支持各种 AppleEvents,因此您可能可以使用 Python 代码中的 AppleScript 做一些很酷的事情,例如实际安排提醒。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...