我正在寻找一种方法来创建一个包装另一个Python程序的Python程序。这就是我的意思:
while (otherProgram is waiting for raw_input):
send some text to the other program
我必须在两个单独的计划中完成这项工作。
这是另一个例子:
program1.py
text = raw_input()
print("You entered " + text)
text2 = raw_input()
print("Your second input was " + text2)
text3 = raw_input()
print("Your third input was " + text3)
program2.py
# use program1.py somehow
while program1_is_waiting_for_input:
send_to_program1("prefix " + raw_input() + " suffix")
示例输入到program2:
asdf
ghjkl
1234
程序输出的程序2:
You entered prefix asdf suffix
Your second input was prefix ghjkl suffix
Your third input was prefix 1234 suffix
我考虑过的事情:
eval
或exec
或类似的东西会起作用,因为我不知道要执行多少代码。
我希望最终得到什么
我最终希望最终得到一个Python程序,每次运行时,在它离开的位置将另一个连续输入插入到包装程序中,并将输出传递给stdout。如果这样做更容易,那就太棒了。
答案 0 :(得分:1)
答案 1 :(得分:1)
以下是使用子进程运行子进程的示例。
import subprocess
program1 = subprocess.Popen("program1.py", stdin=subprocess.PIPE, stdout=subprocess.PIPE)
while program1.poll() == None:
cmd_to_send = "prefix " + raw_input() + " suffix"
program1.stdin.write(cmd_to_send + "\n")
您的子进程将等待输入,因为raw_input
是一个阻塞调用,直到它收到一行输入。