0

有一个需要键盘输入的脚本,我可以在 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 :)

当我使用 foo 循环尝试它时,它会抛出错误,如何在使用新的打印语句更新标准输出时显示交互式语句

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

2 回答 2

1

您可以使用子进程而不是 os.system:

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

它不是睾丸

于 2010-07-16T11:25:13.107 回答
-2

事实上, os.system 和 os.popen 现在已被弃用,subprocess 是处理所有子进程交互的推荐方式。

于 2010-07-16T11:27:09.297 回答