2016-07-12 1 views
0

私はPythonを使用してアプリケーションを開こうとしています。現時点では、これは私が持っているものです:Pythonでアプリケーションを開くと、アプリケーション名に空白があると機能しません

os.system("open " + "/Applications/" + app + ".app") 

(「アプリは」APPNAMEを持つ文字列、スクリプト全体の変化である)今

を、私の問題は、私がしようとすると、これは完璧に動作することです彼らの名前のための単一の単語でアプリを開くために。 "Blender"や "Bracket"のように。しかし、私がPhotoshopのようなアプリケーションを開こうとすると(アプリケーションフォルダ内の "Adobe Photoshop CS6"という名前の)、何も起こりません。私は数時間勉強していましたが、たくさんの質問をしましたが、その多くは文字列の前に 'r'を追加することを話していました。私は文字列のすべての部分の前でこれを試していますが、引用符の間にすべてカプセル化しようとしましたが、何も助けません。

なぜこれが問題になりますか?

+0

あなたは実際にシェルコマンドを実行しています。 「Adobe Photoshop CS6.appを開く」がシェル内で何を意味するのかを推測します:3つの独立した引数。少なくともシェル構文の引用/エスケープを行う必要があります。 '開いた 'Adobe Photoshop CS6.app''です。 – deceze

+0

これは、シェルを経由するよりも、Pythonでこれを行うより良い方法があるはずだと言っています。 – deceze

答えて

1

.appビットの周りに引用符を追加します。

os.system("open " + "'/Applications/" + app + ".app'") 
        ^       ^

ので、それは次のように拡張されますあなたはおそらく、配列の要素に引数を受け入れ、苦しむない、とにかくsubprocess.call()を使用する必要があります

open '/Application/Hello World.app' 

この問題。

+0

ドロピー、私はあなたを愛しています。 <3 – Colobri

関連する問題