如何与外部脚本(程序)进行交互

时间:2010-07-16 11:19:48

标签: python bash externalinterface interaction

有一个期望键盘输入的脚本, 我可以在python中使用os.system('。/ script')调用该脚本,

如何从另一个调用脚本向脚本发回输入?

更新

脚本是:

$ 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循环时,它会抛出错误,如何在使用新的打印语句更新stdout时显示交互式语句

>>> 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 个答案:

答案 0 :(得分:1)

您可以使用subprocess而不是os.system:

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

它不是testet

答案 1 :(得分:-2)

实际上,os.system和os.popen现已弃用,并且子进程是处理所有子进程交互的推荐方法。