4

プログラムでターゲット プログラムを実行し、その標準入力 (raw_input など) にテキストを入力するにはどうすればよいでしょうか。

たとえば、次のようなターゲット プログラム:

text = raw_input("What is the text?")
if text == "a":
    print "Correct"
else:
    print "Not correct text"
4

1 に答える 1

2

あなたはどんな答えを期待していますか?

はい、できます。ただし、パイプで使用する場合は必要ないものも 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]
于 2013-06-30T21:41:53.023 に答える