так что я собираю этого бота, который исполняет команды на сервер для размещения некоторых игр.
У меня есть словарь в форме {'Game Name': subprocess.Popen ()}
subprocess_LOOKUP = {}
нам нужно сохранить для последующего ввода команд для изменения игровых режимов и тому подобного на лету.
Я упростил код до двух небольших функций, чтобы ясно показать проблемы.
import subprocess
from subprocess import PIPE, STDOUT
subprocess_LOOKUP = {}
def gamestart(game, startcmd):
#Open pipe with all parameters to read, write and communicate
p = subprocess.Popen(startcmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=PIPE, shell=True)
subprocess_LOOKUP.update({ game : p }) #Store into dictionary here
def gameinput(game, cmd):
p = subprocess_LOOKUP[game] #Retrieve from dictionary
print(cmd) #Prints the command I want to input into the shell
print(p.stdout.readline()) #Does Nothing (prints no errors)
p.stdin.write(str.encode(cmd)) #Does Nothing (prints no errors)
p.communicate()[0] #Does Nothing (prints no errors)
p.stdin.close() #Does Nothing (prints no errors)
Позже, когда я получаю доступ к словарю, ссылка на подпроцесс. Похоже, что там нет? Попытка написать, прочитать или связаться с процессом ничего не делает, так как не выводит никаких ошибок!
Я пробовал много способов писать или читать из stdin или stdout соответственно, просматривая другие подобные вопросы здесь, и все же ничего не происходит. Я что-то пропустил полностью или мне нужно что-то делать?