如何与外部脚本(程序)互动
有一个脚本需要键盘输入,我可以在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 :)
当我使用for循环时,它就报错了。如何才能在标准输出更新新打印语句时,实时显示这些语句呢?
>>> 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 个回答
-2
实际上,os.system 和 os.popen 这两个方法现在已经不推荐使用了,建议使用 subprocess 这个方法来处理所有的子进程交互。
1
你可以用subprocess来代替os.system:
p = subprocess.Popen('./script',stdin=subprocess.PIPE)
p.communicate('command')
这个还没有测试过