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"

但正如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]
于 2013-06-30T21:41:53.023 回答