Отправка стандартного ввода в подпроцесс в скрипте Python

1

У меня есть скрипт 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 от меня? Я бы предпочел избегать сторонних модулей.

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

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

  • 1
    Я не думаю, что вы можете управлять терминалом через STDIN.
  • 0
    Спасибо за ваш ответ. Любой другой способ, которым я мог?
Показать ещё 7 комментариев
Теги:
macos
terminal
subprocess

1 ответ

2
Лучший ответ

Вы можете использовать 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')
  • 0
    Не забудьте stdin=subprocess.PIPE . Также для communicate необходимо взять некоторые входные данные.
  • 0
    @larsmans: сервер Selenium не должен читать из STDIN, афайк.
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню