有一个期望键盘输入的脚本, 我可以在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)
答案 0 :(得分:1)
您可以使用subprocess而不是os.system:
p = subprocess.Popen('./script',stdin=subprocess.PIPE)
p.communicate('command')
它不是testet
答案 1 :(得分:-2)
实际上,os.system和os.popen现已弃用,并且子进程是处理所有子进程交互的推荐方法。