Я пытаюсь заставить программу python взаимодействовать с сервером Minecraft, который я размещаю, но проблема, которую я обнаруживаю, заключается в том, что когда консоль выводит данные с сервера, она зависает.Я использую Popen и PIPE из подпроцесса, и всякий раз, когда я использую process.stdout.readline (), он печатает все строки, а когда это делается, он останавливает программу, и тогда я не могу выполнить больше команд из-за этого.
def start(cmd):
try:
process = Popen(cmd, stdin=PIPE, stdout=PIPE)
except Exception as e:
print(e)
return process
start('java -Xmx1024M -Xms1024M -jar server.jar nogui') # runs the minecraft server with 8GB of RAM
while True:
print(process.stdout.readline()) # prints out every line in the server console
readmail() # the program checks email for commands, and enters the command into the console using stdin
Я пробовал это:
def start(cmd):
try:
process = Popen(['python', '-u', cmd], stdin=PIPE, stdout=PIPE)
except Exception as e:
print(e)
return process
Это исправляет проблему с process.stdout.readline()
, но выдает ошибку, потому что команда должна вызываться в cmd ине с питоном.Кто-нибудь знает, как решить проблему с readline()
?