【问题标题】:How to gracefully kill OSX application using subprocess in Python如何在 Python 中使用子进程优雅地终止 OSX 应用程序
【发布时间】:2021-02-08 22:10:30
【问题描述】:

我正在使用子进程编写一个脚本,该脚本将在终端上启动一个应用程序,然后退出它。我正在尝试掌握子进程的窍门,而我对终端命令的熟练程度有些不稳定。 (这是一种轻描淡写的说法。)

假设应用程序是 Mathematica。然后以下终端命令将启动应用程序并退出它:

open -a Mathematica

osascript -e 'quit app "Mathematica"'

我找到的 osascript 建议

https://osxdaily.com/2014/09/05/gracefully-quit-application-command-line/

在 python 脚本中,我可以使用启动应用程序

subprocess.Popen("open -a Mathematica", shell=True)

我试过了

subprocess.Popen("osascript -e 'quit app "Mathematica"'", shell=True)

和其他变种但没有成功关闭应用程序。

我在空闲时使用 Mac OS 10.15.4 和 Python 3.7。

【问题讨论】:

  • 顺便说一句,您是否尝试过在终端中运行osascript -e 'quit app "Mathematica"'?成功了吗?
  • 在定义 osascript 命令的字符串中是否包含转义字符?他们只是在翻译到 SO 网站时迷路了吗?我问是因为嵌入的双引号导致显示的代码无效。
  • @GiorgosMyrianthous - 这对你有用吗?我的 Mac 在其 PATH 中没有“退出”命令。
  • @GiorgosMyrianthous——回答你的问题,答案是“不”,它没有用。我想试试你的建议,刚刚被删除。您提出的解决方案是否有错误?
  • @Steve 我的意思是osascript -e 'quit app "Mathematica"'。我的机器上没有安装 Mathematica,但我已经在其他应用程序中尝试过该命令,它确实对我有用

标签: python subprocess


【解决方案1】:

语法无效。这应该可以解决问题:

subprocess.Popen("osascript -e 'quit app \"Mathematica\"'", shell=True)

【讨论】:

  • 完美!谢谢
猜你喜欢
  • 2018-12-12
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
相关资源
最近更新 更多