Ошибка прав доступа: в скрипте Python мне нужно найти файл сервера в системе Unix и открыть его для запуска команд для пользователя - PullRequest
0 голосов
/ 10 марта 2012

В системе Unix, в скрипте Python, я пытаюсь открыть окно терминала и запустить сервер.Насколько я понимаю, в python есть модуль подпроцесса, который должен разрешать такие вещи.Итак:

import subprocess
subprocess.Popen(['path to terminal'])

возвращает:

OSError: [Errno 13] Permission denied

Как мне запустить это с правильными разрешениями?Или есть лучший, безопасный способ сделать то, что мне нужно?

Я относительно новичок в программировании, поэтому, пожалуйста, переориентируйте обсуждение, если мой вопрос неверен.Спасибо!

1 Ответ

4 голосов
/ 10 марта 2012

Редактировать: вы заявляете, что хотите выполнить /Applications/Utilities/Terminal.app, поэтому вы, очевидно, работаете в Mac OS X.

Программы Mac OS X .app - это каталоги . Их можно запустить с помощью команды оболочки Mac OS open.

Чтобы открыть программу / путь / к / серверу в новом сеансе терминала Max OS:

import subprocess
termapp=['open','-a','/Applications/Utilities/Terminal.app']
sp=subprocess.Popen(termapp+['/path/to/server'])

Существует также версия терминала с командной командой, поэтому вам не нужно open -a.

import subprocess
termapp=['/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal']
sp=subprocess.Popen(termapp+['/path/to/server'])

Два способа имеют тонкие различия в том, как окна группируются оконным менеджером. Каждый раз, когда вы делаете выше, вы получаете еще один процесс терминала и еще один значок в трее. При использовании -a открывается новое окно в той же основной программе терминала.

...