У меня есть скрипт Python, который принимает пользовательский ввод во время выполнения и дает некоторые результаты. Пример кода:Использовать Python для запуска интерактивных скриптов python
import random
l1 = ['Bob', 'Eric', 'Dimitar', 'Kyle']
l2 = ['Scott', 'Mat', 'Con']
n = raw_input('Enter no. of persons: ')
for i in range(int(n)):
print random.choice(l1) + ' ' + random.choice(l2)
Выход:
$ ./generate_name.py
Enter no. of persons: 2
Kyle Scott
Eric Mat
Теперь я хочу, чтобы написать другой сценарий Python, который запускается в первый Python скрипт несколько раз с определенным входом (входная последовательность хранится в виде списка) и записывать выходные данные в файл. Кроме того, я не могу вносить какие-либо изменения в первый код Python.
Я могу использовать модуль subprocess
для запуска сценария и записи вывода, но как я могу позаботиться о интерактивной части ввода пользователя?
Если вы используете систему в стиле Unix, вы можете использовать трубы ... –
Вы имеете в виду что-то вроде: 'subprocess.Popen ('./ generate_name.py <<< 2', shell = 1)'. Да, это сработает. Большое спасибо :) –
Вероятно, вы должны использовать аргумент 'stdin' для' Popen', а не использовать 'shell = True' (или вашу менее идиоматическую версию). – geoffspear