有一个期望键盘输入脚本进行交互, 我可以调用脚本使用os.system(“./脚本”)在python,如何与外部脚本(程序)
怎么可能从另一个调用脚本发回输入到脚本?
更新:
的脚本是:
$ 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 :)
当我尝试它与福尔循环,它会抛出错误,如何显示报表交互性和当标准输出与新的打印语句
>>> 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' :) – 2010-07-16 11:40:34
当我用foor循环尝试它时,它会引发错误,如何显示交互式语句以及何时使用新的打印语句更新stdout。 >>> p.communicate( 'megna') 输入您nameWelcome megna :) 输入您nameTraceback(最新最后调用):在 名的raw_input =文件 “./script”,3号线,(”输入你的名字') EOFError:读取一行时的EOF (None,None) –
2010-07-16 11:50:41