我怎么能让一个程序执行一个目标程序,然后在它的标准输入中输入文本(例如 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"
但正如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]