Открыть программу на Python в другом интерфейсе командной строки (CLI)? - PullRequest
0 голосов
/ 09 января 2012

Мне нужен скрипт на python, который открывает другой CLI и запускает его там. Э.Г.

python C:\Python27\Scripts\script.py test
python /path/to/script_folder/script.py test

Мне нужно поддерживать Unix и Windows.

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 09 января 2012

Если вы ищете для запуска интерактивной консоли в своем скрипте, то я бы использовал что-то вроде этого:

import code
console = code.InteractiveConsole()
console.interact()

Более подробную информацию вы можете найти в документации модуля кода .В частности, вас могут заинтересовать методы runcode и runsource.

Если вы ищете запуск сценария и продолжаете работу после выполнения сценария в оболочке Python, я бы использовал что-то вродеэто:

$ python -i <path_to_script>
0 голосов
/ 28 сентября 2012

После долгих размышлений, прочитав этот и другие вопросы, я нашел решение, у меня был момент «человек, я тупой», и в конце концов это сработает:

command = r'start cmd.exe python "' + <script> + r'" [args]'
os.system(command)

Ключевое слово "начало". Это делает магию, которая в основном говорит Windows, что файл для выполнения не имеет никакого отношения к фактическому вызывающему, и альт, у вас есть новая консоль.

Я не уверен насчет Unix, но я предполагаю, что это будет похоже, используя каким-то образом gnome-терминал.

0 голосов
/ 09 января 2012

Если я правильно понимаю ваш вопрос, вы хотите:

  1. запустить скрипт Python
  2. Этот скрипт должен сам запустить новое окно терминала
  3. В этомновый терминал, другой скрипт Python должен быть запущен

В зависимости от того, должен ли пункт 3 оставить окно терминала открытым, решения могут быть самыми разными.

Если вам не нуженокно открыто, просто перейдите на os.system или subprocess.Если вы только запускаете скрипт на python, вам может быть не просто указать «python» в качестве исполняемого файла, а значит, кроссплатформенный.

Если вам нужно открыть окно, вам придется запуститьконкретный shell + терминал, который зависит от ОС (cmd.exe в Windows; в мире unix: / bin / sh, / bin / bash или что-то еще, возможно, обернутый xterm).

Ночестно говоря, если нет какого-то очень специфического требования открыть совершенно другой сеанс терминала, вам нужно просто импортировать второй модуль и запустить его из первого или прочитать его в памяти и затем использовать exec.

...