我在OSX终端中使用osascript -e 'quit app "Quicktime Player 7"'
来关闭Quicktime Player 7应用程序,该应用程序运行良好,但无法使用python运行相同的命令。我做错了什么?
这只是运行,但什么都不做:
command = ['osascript', '-e', 'quit app', 'Quicktime Player 7']
p = subprocess.Popen(command)
答案 0 :(得分:3)
将quit app
和Quicktime Player 7
作为两个列表元素,会将subprocess.Popen
执行的命令转换为以下内容:
osascript -e 'quit app' 'Quicktime Player 7'
osascript
期望-e
之后的参数为"脚本的一行" (请参阅osascript
' s man-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)