[英]Give inputs to a running program using Python
我正在通过终端运行python脚本。 该脚本包含一个主要功能。 它在某个目录中运行其他程序,所有这些程序也都在Python中。
在运行这些子程序时,我需要使用此主程序在终端中输入其所需的输入值(而不是命令行参数)。
例如:
MainProgram调用--dir1 / pg1.py
----inputs 10 20 30
主程序调用--dir1 / pg2.py
----inputs 100 20 30 like wise the inputs to the subprograms are to be given by the main program.
我正在尝试自动化向程序提供输入的过程,而我需要在程序的帮助下进行操作。 例如:下面给出的是查找阶乘的简单程序
i=1
fact=1
num=input("Enter the num : ")
while i<=num:
fact*=i
i+=1
print fact
我需要一个程序(例如MainProgram.py),该程序在执行时会调用上述程序,并向其提供所需的输入,并获取输出并验证它是否正确。
请帮我解决一下这个。 一直在寻找解决方案。
也许您需要input()
函数。
vals = input("Enter values").split(" ")
print(vals)
该程序将打印消息"Enter values"
并等待用户输入内容,然后将每个值拆分为单独的列表元素,然后打印新列表。
假设您输入10 20 30
则vals
变量将为["10", "20", "30"]
。
p = Popen(["python",programURL], stdin=PIPE, stdout=PIPE)
out = p.communicate(input=f.read())[0]
有这样的事情。 但这在用户循环输入值时无效。
我认为您正在寻找stdin和stdout。
当一个完成写入然后另一个读取它时,请检查这两个程序
sender.py
#!/usr/bin/python
import sys
for i in range(0,10):
sys.stdout.write('baby\n')
收货人
#!/usr/bin/python
import sys
data = sys.stdin.read()
print data
执行命令:./sender.py | ./reciever.py
通过receiver.py输出:
baby
baby
baby
baby
baby
baby
baby
baby
baby
baby
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.