我osascript -e 'quit app "Quicktime Player 7"'在 OSX 终端中使用关闭 Quicktime Player 7 应用程序,该应用程序运行良好,但无法使用 python 获得相同的命令。我究竟做错了什么?
这只是运行,但什么也不做:
command = ['osascript', '-e', 'quit app', 'Quicktime Player 7']
p = subprocess.Popen(command)
我osascript -e 'quit app "Quicktime Player 7"'在 OSX 终端中使用关闭 Quicktime Player 7 应用程序,该应用程序运行良好,但无法使用 python 获得相同的命令。我究竟做错了什么?
这只是运行,但什么也不做:
command = ['osascript', '-e', 'quit app', 'Quicktime Player 7']
p = subprocess.Popen(command)
拥有quit app和Quicktime Player 7作为两个列表元素会将命令subprocess.Popen执行转换为如下内容:
osascript -e 'quit app' 'Quicktime Player 7'
osascript期望后面的参数是“脚本的-e一行”(参见手册页)。拆分参数会导致执行和解释为参数,因此可能会忽略它。osascriptosascriptquit appQuicktime 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)