从系统运行脚本中检索Raw_Input

时间:2009-07-21 21:52:36

标签: python jython

我正在使用OS.System命令来调用python脚本。

示例:

OS.System("call jython script.py")

在我正在调用的脚本中,出现以下命令:

x = raw_input("Waiting for input")

如果我从命令行运行script.py,我可以输入数据没问题,如果我通过自动方法运行它,我得到一个EOFError。我过去曾经读过,这是因为系统要求计算机运行它,因此永远不会以这种方式接收输入数据。

所以问题是如何让python在以自动方式运行时等待用户输入?

2 个答案:

答案 0 :(得分:2)

问题在于您运行子脚本的方式。由于您使用os.system(),脚本的输入通道会立即关闭,raw_input()提示符会触发EOF(文件末尾)。即使没有发生这种情况,你也无法实际向孩子发送一些输入文本,因为我认为你需要使用raw_input()。

您应该使用subprocess module代替。

import subprocess
from subprocess import PIPE

p = subprocess.Popen(["jython", "script.py"], stdin=PIPE, stdout=PIPE)
print p.communicate("My input")

答案 1 :(得分:0)

你的问题有点不清楚。调用Python脚本的过程是什么以及它是如何运行的?如果父进程没有标准输入,则子进程也没有。