使用Python

时间:2017-12-27 05:35:46

标签: python python-3.x

我正在通过终端运行python脚本。该脚本包含一个main函数。它在某个目录中运行其他程序,所有这些程序也都在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),在执行时调用上面的程序并为其提供所需的输入并获取输出并验证它是否正确。

请帮我解决这个问题。一直在寻找解决方案。

4 个答案:

答案 0 :(得分:0)

也许你想要input()函数。

vals = input("Enter values").split(" ")
print(vals)

程序将打印消息"Enter values"并等待用户输入内容,然后将每个值拆分为单独的列表元素并打印新列表。

假设您输入10 20 30vals变量将为["10", "20", "30"]

答案 1 :(得分:0)

如果可以的话,最好用参数调用pg1和pg2中的函数。如果你不能那样:像这样使用os.system

from os import system

system('python pg1.py 10 20 30')

答案 2 :(得分:0)

p = Popen(["python",programURL], stdin=PIPE, stdout=PIPE)
out = p.communicate(input=f.read())[0]

得到这样的东西。但是,当用户在循环中输入值时,这无效。

答案 3 :(得分:0)

我认为你正在寻找stdin和stdout。

完成一个完成后再检查这两个程序,然后再读一遍

<强> sender.py

#!/usr/bin/python
import sys
for i in range(0,10):
    sys.stdout.write('baby\n')

<强> reciever.py

#!/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