0

我可以使用 Python 调用另一个程序

subprocess.call(["do_something.bat"])

我想知道我是否可以收集标准输入do_something.bat

do_something.bat是Java程序的启动器,Java程序会提示用户输入项目名称、版本等项目具体信息,并根据用户输入生成项目骨架。

我用python调用这个do_something.bat,它生成所有项目文件后,我需要继续到项目根目录下的特定目录,但这需要知道项目名称,我可以得到用户之前输入的项目名称吗?

4

2 回答 2

2

这取决于如何do_something.bat提示用户。

如果它只是从标准输入中读取,您的程序可以充当中间人。它可以提示 的输出do_something.bat,读取用户的响应,然后通过管道将响应返回到 的标准输入do_something.bat

否则,我认为不适应是不可能的do_something.bat

于 2012-11-12T15:14:03.780 回答
1

如果您知道程序将要求的确切参数以及它将要求它们的顺序,那么您可以自己收集参数并将它们转发到子进程。

例如。

from subprocess import Popen, PIPE

# get inputs
input1 = ...
input2 = ...

child = Popen("do_something.bat", stdin=PIPE)
# Send data to stdin. Would also return data from stdout and stderr if we set 
# those arguments to PIPE as well -- they are returned as a tuple
child.communicate("\n".join([input1, input2, ...]))

if child.returncode != 0:
    print "do_something.bat failed to execute successfully" 
于 2012-11-12T15:26:09.290 回答