2017-12-27 3 views
0

私はターミナル経由でPythonスクリプトを実行しています。スクリプトには主な機能が含まれています。それはいくつかのディレクトリ内の他のプログラムを実行し、それらのプログラムはすべてPythonにもあります。Pythonを使用して実行中のプログラムに入力を与える

これらのサブプログラムを実行しているときに、このメインプログラム(コマンドライン引数ではありません)を使用して端末に必要な入力値を入力する必要があります。

例:

メインプログラムは--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. 

私はプロセスを自動化しようとしていますプログラムへの入力を与えて、私はプログラムの助けを借りてそれを行う必要があります。 例:下記の私は(MainProgram.pyを言う)プログラムが必要階乗

i=1 
fact=1 
num=input("Enter the num : ") 
while i<=num: 
    fact*=i 
    i+=1 
print fact 

を見つけるための簡単なプログラムであることは、実行時に上記のプログラムを呼び出し、それに必要な入力を与えると出力とを検証を取得それが正しいかどうかを判断する。

私にこれを手伝ってください。長い間ソリューションを探していた。

+2

の可能性のある重複した[取得ユーザー入力](https://stackoverflow.com/questions/3345202/getting-user-input)あなたはここに文書化された入力()関数に参照のうえいる – SCB

+0

。 https://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/io.html – Yohst

答えて

0

おそらく、input()機能が必要です。

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

プログラムはその後、別のリストの要素にそれぞれの値を分割し、新しいリストを印刷し、メッセージ"Enter values"を印刷し、何かを入力するようにユーザを待ちます。

10 20 30と入力すると、vals変数は["10", "20", "30"]になります。

0

可能であれば、引数を指定してpg1とpg2内の関数を呼び出す方がよいでしょう。あなたは、することができない場合は、次のようなos.systemを使用します。

from os import system 

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

これはコマンドライン引数であり、私はそれを探していません。 – openacc

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

このような何かを手に入れました。しかし、これはユーザがループ内で値を入力するときには有効ではありません。

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

出力先。PY:

baby 
baby 
baby 
baby 
baby 
baby 
baby 
baby 
baby 
baby 
関連する問題