как взаимодействовать с внешним скриптом (программой) - PullRequest
0 голосов
/ 16 июля 2010

есть скрипт, который ожидает ввода с клавиатуры, я могу вызвать этот скрипт с помощью os.system ('./ script') в python,

как можно отправить обратно вход в скрипт из другого вызывающего скрипта?

Обновление:

скрипт:

$ cat script
#!/usr/bin/python
for i in range(4):
        name=raw_input('enter your name')
        print 'Welcome %s :) ' % name

, когда я пытаюсь без цикла for, он работает, но показывает вывод только при выходе из скрипта.

>>> 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)

Ответы [ 2 ]

1 голос
/ 16 июля 2010

Вы можете использовать подпроцесс вместо os.system:

p = subprocess.Popen('./script',stdin=subprocess.PIPE)
p.communicate('command')

это не тест

0 голосов
/ 16 июля 2010

Фактически os.system и os.popen устарели, и подпроцесс является рекомендуемым способом обработки всех взаимодействий подпроцесса.

...