Я перечитывал доступные вопросы, касающиеся обработки подпроцесса в реальном времени в Python 3, хотя ни один из них не решает проблему, с которой я столкнулся.Я работаю над сценарием для анализа соответствующих данных и форматирования вывода исходного сервера специально для Day of Infamy.
Когда скрипт запускается, он запускает сервер Day of Infamy (./doi.sh), который предоставляет переменные запуска сервера, такие как карта, список воспроизведения, данные сервера Battle Eye и т. Д. В определенный момент серверскрипт просто зависает, ожидая события, такого как соединение или уничтожение.В этот момент сервер регистрирует его в STDOUT, однако моя программа на Python перестает выводить какие-либо данные, если вы не нажмете клавишу «Ввод».После нажатия кнопки «Ввод» будут напечатаны данные о самых последних событиях.
Что может быть причиной необходимости нажимать клавишу «Ввод» для получения дополнительной информации?Может ли быть что-то тайм-аут, когда серверный скрипт doi.sh ожидает события?
Мой текущий код для запуска и чтения из подпроцесса:
cmd = './doi.sh'
data = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, bufsize=1)</p>
<p>while True:
output = data.stdout.readline()
if output == '' and data.poll() is not None:
break
if output:
output = output.decode('utf-8')
print(output)
У меня есть функции, созданные для анализа информации из декодированной строки, они работают со строками, которые выводятся подпроцессом, но необходимость нажать клавишу ввода для обновления журнала консоли отрицательно сказывается на цели всей программы.