1

私はosascript -e 'quit app "Quicktime Player 7"'OSX ターミナルで Quicktime Player 7 アプリケーションを閉じるために使用していますが、これはうまく機能しますが、Python を使用してこの同じコマンドを動作させることはできません。私は何を間違っていますか?

これはただ実行されますが、何もしません:

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

1 に答える 1

3

quit appとをQuicktime Player 72 つのリスト要素として持つと、コマンドのsubprocess.Popen実行が次のように変換されます。

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

osascript-eは、次のパラメータが「スクリプトの 1 行」であることを想定しています(osascriptマニュアルページを参照)。パラメータを分割すると、引数として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)
于 2015-04-26T13:59:47.860 に答える