Отправка стандартного ввода в подпроцесс в скрипте Python - PullRequest
1 голос
/ 11 марта 2012

У меня есть скрипт на python, который требует открытия другого окна терминала для отправки некоторых команд. Stackoverflowers уже получили меня так далеко:

import subprocess
server_terminal = subprocess.Popen(['open','-a','/Applications/Utilities/Terminal.app','/Applications/Utilities/Terminal.app']) #Not sure about the inelegance of the doubled path, but it does open another terminal window, which I need.

Следующий шаг, который мне нужен, это отправить этому терминалу несколько команд, чтобы я мог настроить локальный сервер на рабочем столе пользователя. Возникли серьезные проблемы с выяснением того, как управлять этим подпроцессом.

Может кто-нибудь направить меня к методу, который я бы использовал, чтобы этот подпроцесс терминала взял у меня стандартный ввод? Я бы предпочел избегать сторонних модулей.

Редактировать: Некоторый контекст - Моя главная цель - открыть сервер селена в отдельном окне терминала, чтобы я мог выдавать ему команды. Я уже знаю, как управлять сервером после его запуска, я просто не могу понять, как автоматически запустить его.

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 11 марта 2012

Вы можете использовать Popen для непосредственного запуска сервера:

selenium_jar = '/full/path/to/selenium-server-standalone-2.0b3.jar'
path_to_fifo_profile = '...'

# start external process
p = subprocess.Popen(['java', '-jar', selenium_jar, 
                              '-firefoxProfileTemplate', path_to_fifo_profile,
                     ])
# wait for it to finish before exiting
p.wait()

Если вы хотите увидеть вывод, вы можете использовать os.system вместо:

os.system('java '
          '-jar /path/to/selenium-server-standalone-2.0b3.jar '
          '-firefoxProfileTemplate /path/to/profile')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...