我怎样才能让程序执行目标程序,然后在其stdin中输入文本(例如raw_input。)
例如,像这样的目标程序:
text = raw_input("What is the text?")
if text == "a":
print "Correct"
else:
print "Not correct text"
答案 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]