プログラムでターゲット プログラムを実行し、その標準入力 (raw_input など) にテキストを入力するにはどうすればよいでしょうか。
たとえば、次のようなターゲット プログラム:
text = raw_input("What is the text?")
if text == "a":
print "Correct"
else:
print "Not correct text"
あなたはどんな答えを期待していますか?
はい、できます。ただし、パイプで使用する場合は必要ないものも stdout に配置します。さらに、行ごとに入力を取得するためにループするraw_input
のと同じ方法でループする必要があります。sys.stdin
while True:
text = raw_input("What is the text?")
if text == "a":
print "Correct"
elif text == "stop":
print "Bye"
break
else:
print "Not correct text"
しかし、Zen of Python – PEP20 で述べられているように、 「それを行うための明白な方法は 1 つ、できれば 1 つだけにする必要があります。」あなたの場合、それは使用することになりますsys.stdin
。
(編集):OPが求めていることを正しく理解していない可能性があるため、Pythonプログラム内から別のプログラムを実行するには、使用する必要がありますsubprocess.Popen()
import subprocess
text = "This is the text"
data = subprocess.Popen(['python', 'other_script.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE).communicate(input=text)
print data[0]