我制作了一个检查密钥的程序。和另一个应该找到密钥的程序。我设法在第二个程序中打开子进程但无法向其发送输入。这是检查密钥secret_key.py
的程序:
SECRET_KEY = "hi"
current_key = 0
while not current_key == "exit":
wrong_key = False
current_key = raw_input("Enter the key or enter 'exit' to exit.\n")
for i in range(len(current_key)):
if i < len(SECRET_KEY):
if not current_key[i] == SECRET_KEY[i]:
wrong_key = True
else:
wrong_key = True
if not wrong_key:
print("the key is right!\n")
current_key = "exit"
raw_input("Press ENTER to exit\n")
exit()
现在我创建了一个.sh文件,以便能够在新终端中将其作为子进程运行program.sh
:
#! /bin/bash
python Desktop/school/secret_key.py
这就是我被卡住的地方,find_key.py
:
import subprocess
program = subprocess.Popen("./program.sh")
现在我找不到一种方法来发送secret_key.py
它要求的输入。
无论如何我可以从secret_key.py
向find_key.py
发送字符串输入吗?
答案 0 :(得分:1)
要向Popen打开的流程发送输入和读取输出,您可以使用流程“stdin
和stdout
字段读取和写入流程。但是,您需要告诉Popen
设置管道:
process = subprocess.Popen([SPIM_BIN] + extra_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
pin = process.stdin
pout = process.stdout
现在你可以写pin
并像pout
那样读取任何旧的文件描述符。
请注意,这可能不允许您连接到gnome-terminal
。但它允许您连接到program.sh
。