使用子流程与python交互



我尝试使用如下子流程模块与python解释器交互:

import subprocess

def start(executable_file):
return subprocess.Popen(
executable_file,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)

def read(process):
return process.stdout.readline().decode("utf-8").strip()

def write(process, message):
process.stdin.write(f"{message.strip()}n".encode("utf-8"))
process.stdin.flush()

def terminate(process):
process.stdin.close()
process.terminate()
process.wait(timeout=0.2)

process = start("python")
while True:
write(process, input())
print(read(process))
terminate(process)

但似乎已经陷入僵局。

如果有人知道如何使用python代码与python交互并恢复stdout、stderr和流模式。

您需要对子流程使用communicate()而不是read()write(),否则会导致死锁。

请参阅本页中间的红色警告叉线。

相关内容

  • 没有找到相关文章

最新更新