【发布时间】:2019-10-17 15:48:39
【问题描述】:
我正在尝试通过子进程模块控制子进程。
我正在尝试使用其标准输出从 Minecraft 基岩服务器软件中读取数据。但是,当我写入标准输入时,它会通过,但是当我之后从标准输出读取时,它会被阻止。
import subprocess as sp
proc = sp.Popen([r"C:\Users\jbloo\Documents\VSCode\Python\bedrock-server-1.12.1.1\bedrock_server.exe"],
stdout=sp.PIPE, stderr=sp.STDOUT, stdin=sp.PIPE, universal_newlines=True)
with proc:
while True:
# print("Trying to communicate")
output = proc.stdout.readline().strip()
print(output)
if "Server started." in output:
break
while True:
command = input("Command: ", ) + "\n"
# command = bytes(command, "utf-8")
proc.stdin.write(command)
print("Wrote")
print(proc.stdout.readline())
我尝试了许多其他解决方案,但我似乎无法得到它。
这是终端出来的结束。
[2019-10-17 01:22:04 INFO] IPv4 supported, port: 19132
[2019-10-17 01:22:04 INFO] IPv6 supported, port: 19133
[2019-10-17 01:22:05 INFO] IPv4 supported, port: 54072
[2019-10-17 01:22:05 INFO] IPv6 supported, port: 54073
[2019-10-17 01:22:05 INFO] Server started.
Command: sdf
Wrote
STDOUT 不会读取。刚刚被屏蔽了!
【问题讨论】:
标签: python python-3.x subprocess