在Python中输入raw_input()

时间:2013-06-30 20:18:02

标签: python raw-input piping

我怎样才能让程序执行目标程序,然后在其stdin中输入文本(例如raw_input。)

例如,像这样的目标程序:

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

1 个答案:

答案 0 :(得分:1)

你期待什么样的答案?

是的,你可以。但是如果在管道中使用它,你也会把东西放在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中所述,“应该有一个 - 最好只有一个 - 显而易见的方法。”在你的情况下,那将是使用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]