如何使用子流程为Java程序提供多个输入?

2024-09-24 22:27:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个生成随机数的Java程序,它首先要求用户输入最小数,然后是最大数,最后输出该范围内的随机数

现在我想编写一个python脚本,自动运行java程序,并给出最小值和最大值。然而,在阅读了几个小时的文档和堆栈溢出答案之后,我无法找到一种方法来实现这一点。 这是我到目前为止的python脚本-

import subprocess

p1 = subprocess.run(['javac', 'RandomNumInt.java'])
p2 = subprocess.run(['java', 'RandomNumInt'])

现在,一旦RandomNumInt运行,下面是它的运行方式-

Enter the minimum number
1
Enter the maximum number
100
The generated random number is: 71

除此之外,“1”和“100”由用户通过键盘输入。

我想让脚本自动完成它。我读过Popencommunicate(),但我不知道如何使用它们来做我想做的事情(java程序使用扫描仪获取输入。)

即使我修改Java程序使其易于编写脚本,我还是想学习。。是否无法在程序执行的不同点自动输入多个输入

我的主要目标是学习如何使用像这样的Python脚本,现在,使用这些知识运行这个Java程序数百次,这样我就可以看到我的Java程序是多么随机


Tags: therun答案用户文档程序脚本number
1条回答
网友
1楼 · 发布于 2024-09-24 22:27:50

您可以在数组中传递参数,即:

p2 = subprocess.run(['java', 'RandomNumInt', ' min', 1, ' max', 100])

前提是您的第二个代码可以读取它

编辑

您也可以尝试类似的方法:

p2 = subprocess.Popen(['java','RandomNumInt'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p2.stdin.write(b'1\n')
p2.stdin.flush()
p2.stdin.write(b'100\n')
p2.stdin.flush()
print(p2.stdout.readline())

相关问题 更多 >