2016-07-12 4 views
0

Я пытаюсь открыть приложения с помощью python. На данный момент, это то, что я получил:Открытые приложения с Python не работают, когда в имени приложения есть пробелы

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

(«приложение» является строка с APPNAME, изменения по всему сценарию)

Теперь моя проблема заключается в том, что это работает безупречно, когда я пытаюсь для открытия приложений одним словом для их имени. Как «Блендер» или «Скобки». Однако, если я пытаюсь открыть приложения, такие как Photoshop (который в папке приложений называется «Adobe Photoshop CS6»), ничего не происходит. Я пробовал уже несколько часов, задал много вопросов, многие из них говорили о добавлении «r» перед строкой. Я пробовал это перед каждой частью моей строки, а также пытался инкапсулировать все это между кавычками, но ничего не помогает.

Почему это даже проблема?

+0

Вы действительно выполняете команду оболочки. Угадайте, что 'open Adobe Photoshop CS6.app' означает в оболочке: 3 отдельных аргумента. Вам нужно указать/escape для синтаксиса оболочки, по крайней мере: 'open 'Adobe Photoshop CS6.app''. – deceze

+0

Сказав это, в Python должны быть лучшие способы сделать это, чем проходить через оболочку. – deceze

ответ

1

Добавить кавычки .app бит:

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

так он расширяется до:

open '/Application/Hello World.app' 

Вы должны, вероятно, использовать subprocess.call() в любом случае, который принимает аргументы элементов в массиве и не страдает от Эта проблема.

+0

Droppy, я люблю тебя. <3 – Colobri

 Смежные вопросы

  • Нет связанных вопросов^_^