В качестве примера я создал следующую внешнюю программу под названием test.py:
Код: Выделить всё
print('Test Program')
print('1 First option, 2 Second Option')
choice = input()
if choice == '1':
second_param = input('Insert second param: ')
result = choice + ' ' + second_param
print(result)
Я хочу запустить эту программу из другого скрипта и взаимодействовать с ней, чтобы напечатать тот же результат.
После прочтения документации по подпроцессу я получил следующее:
Код: Выделить всё
EXTERNAL_PROG = 'test.py'
p = Popen(['py', EXTERNAL_PROG], stdout=PIPE, stdin=PIPE, shell=True)
print(p.stdout.readline().decode('utf-8'))
print(p.stdout.readline().decode('utf-8'))
p.stdin.write(b'1\n')
p.stdin.write(b'2\n')
print(p.stdout.readline().decode('utf-8'))
Я нашел два связанных вопроса, но так и не смог заставить его работать.
Здесь в ответе рекомендуется использовать модуль pexpect. Я пытался адаптировать код к своей ситуации, но это не сработало.
Здесь предлагается использовать -u, но его добавление ничего не изменило.
Я знаю, что решение можно найти, изменив test.py, но в моем случае это невозможно, так как мне нужно использовать другую внешнюю программу. Это всего лишь минимальный пример, основанный на нем.
Подробнее здесь: https://stackoverflow.com/questions/619 ... -in-python
Мобильная версия