我正在使用OS.System命令来调用python脚本。
示例:
OS.System("call jython script.py")
在我正在调用的脚本中,出现以下命令:
x = raw_input("Waiting for input")
如果我从命令行运行script.py,我可以输入数据没问题,如果我通过自动方法运行它,我得到一个EOFError。我过去曾经读过,这是因为系统要求计算机运行它,因此永远不会以这种方式接收输入数据。
所以问题是如何让python在以自动方式运行时等待用户输入?
答案 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脚本的过程是什么以及它是如何运行的?如果父进程没有标准输入,则子进程也没有。