есть скрипт, который ожидает ввода с клавиатуры, я могу назвать этот сценарий с os.system («./ сценарий») в питона,, как взаимодействовать с внешним скриптом (программа)
, как это возможно отправить обратно в скрипт из другого сценария вызова?
обновление:
сценарий:
$ cat script
#!/usr/bin/python
for i in range(4):
name=raw_input('enter your name')
print 'Welcome %s :) ' % name
, когда я стараюсь не для цикла, он работает, но он показывает выход только тогда, когда скрипт завершает работу.
>>> p = subprocess.Popen('./script',stdin=subprocess.PIPE)
>>> p.communicate('navras')
enter your nameWelcome navras :)
, когда я попробовать с петлей FOOR, он выдает ошибку, как отобразить заявления интерактивными, как и когда стандартный вывод обновляется новыми заявлениями для печати
>>> p.communicate('megna')
enter your nameWelcome megna :)
enter your nameTraceback (most recent call last):
File "./script", line 3, in <module>
name=raw_input('enter your name')
EOFError: EOF when reading a line
(None, None)
Эти ссылки должны дать более подробную информацию: http://docs.python.org/library/subprocess.html http://jimmyg.org/blog/2009/working-with-python-subprocess.html В приведенном выше примере вы, вероятно, также хотите добавить аргумент 'stdout = subprocess.PIPE'. Функция связи должна возвращать кортеж '(stdout, stderr)' с данными, отправленными каждому из этих дескрипторов. Вы также попробуете 'p.stdin.write()' и 'p.stdout.readline()'. В самом деле, вы можете обрабатывать 'p.stdin' и' p.stdout' так же, как и любой другой файл-объект :) –
, когда я пытаюсь использовать его с помощью петли foor, он выдает ошибку. Как отображать операторы интерактивные, как и когда stdout обновляется новыми операциями печати. >>> p.communicate ('Мегна') введите свой nameWelcome Мегна :) введите свой nameTraceback (самый последний вызов последнего): File "./script", линия 3, в имя = raw_input (» введите свое имя ') EOFError: EOF при чтении строки (None, None) –