У меня есть скрипт 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.
Следующим шагом, который мне нужен, является отправка этим терминалам некоторых команд, чтобы я мог настроить локальный сервер на рабочем столе пользователя. Имея некоторые значительные проблемы, определяющие, как управлять этим подпроцессом.
Может ли кто-нибудь направить меня к методу, который я использовал бы, чтобы заставить этот подпроцесс терминала взять stdin от меня? Я бы предпочел избегать сторонних модулей.
Редактирование: какой-то контекст. Моя главная цель - открыть сервер селена в отдельном окне терминала, чтобы я мог его выдать. Я уже знаю, как управлять сервером после его запуска, я просто не могу понять, как его автоматически запустить.
Спасибо за вашу помощь!
Вы можете использовать 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')
stdin=subprocess.PIPE
. Также для communicate
необходимо взять некоторые входные данные.