0

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

例子:

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

在我调用的脚本中,存在以下命令:

x = raw_input("Waiting for input")

如果我从命令行运行 script.py,我可以毫无问题地输入数据,如果我通过自动化方法运行它,我会得到一个 EOFError。我过去曾读到,发生这种情况是因为系统希望计算机运行它,因此永远无法以这种方式接收输入数据。

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

4

2 回答 2

2

问题在于您运行子脚本的方式。由于您使用 os.system() 脚本的输入通道立即关闭,并且 raw_input() 提示符命中 EOF(文件结尾)。即使这没有发生,你也没有办法将一些输入文本实际发送给孩子,因为我假设你正在使用 raw_input()。

您应该改用subprocess 模块

import subprocess
from subprocess import PIPE

p = subprocess.Popen(["jython", "script.py"], stdin=PIPE, stdout=PIPE)
print p.communicate("My input")
于 2009-07-21T23:14:22.513 回答
0

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

于 2009-07-21T22:52:15.070 回答