簡體   English   中英

使用Python向正在運行的程序提供輸入

[英]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 30vals變量將為["10", "20", "30"]

如果可以的話,最好在pg1和pg2內部使用參數調用函數。 如果不能, 像下面這樣使用os.system

from os import system

system('python pg1.py 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM