如何与外部脚本(程序)互动

0 投票
2 回答
1555 浏览
提问于 2025-04-16 01:23

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

这个还没有测试过

撰写回答