【问题标题】:use command `osascript -e 'quit app "Quicktime Player 7"'` with python在 python 中使用命令`osascript -e 'quit app "Quicktime Player 7"'`
【发布时间】:2025-11-26 02:05:02
【问题描述】:

我在 OSX 终端中使用osascript -e 'quit app "Quicktime Player 7"' 关闭 Quicktime Player 7 应用程序,该应用程序运行良好,但无法使用 python 获得相同的命令。我做错了什么?

这只是运行,但什么都不做:

command = ['osascript', '-e', 'quit app', 'Quicktime Player 7']
p = subprocess.Popen(command)

【问题讨论】:

    标签: python subprocess popen quicktime osascript


    【解决方案1】:

    quit appQuicktime Player 7 作为两个列表元素会将subprocess.Popen 执行的命令转换为如下内容:

    osascript -e 'quit app' 'Quicktime Player 7'
    

    osascript 期望-e 后面的参数是“脚本的一行”(参见osascriptman-page)。 拆分参数会导致osascript 执行quit app 并将Quicktime Player 7 解释为参数,因此可能会忽略它。

    一个简单的修复方法如下:

    command = ['osascript', '-e', 'quit app "Quicktime Player 7"']
    p = subprocess.Popen(command)
    

    如果您一开始不想使用列表/拆分命令,可以使用shlex.split 为您完成工作:

    import shlex
    command = shlex.split("osascript -e 'quit app \"Quicktime Player 7\"'")
    p = subprocess.Popen(command)
    

    【讨论】: