Здравствуйте, inoremap, Вы писали:
I>Полгода назад понадобился способ поиска последовательности байт в потоке на python, без считывания всех данных потока в память, гугл нашел вариант https://stackoverflow.com/questions/73841021/find-a-pattern-in-a-stream-of-bytes-read-in-blocks который мне не подошел, сейчас уже не вспомню по какой причине, все генераторы кода, что я попробовал, выдавали нерабочие варианты, иногда состоящие из частей кода ответа на stackoverflow.
Типа такого:
def find_sequence_in_stream(stream, sequence, buffer_size=4096):
# Буфер для хранения части потока, которая может содержать начало искомой последовательности
buffer = b''
while True:
# Читаем данные из потока
data = stream.read(buffer_size)
if not data:
# Если поток закончился, выходим
break
# Объединяем предыдущие данные с новыми
data = buffer + data
# Пытаемся найти последовательность
index = data.find(sequence)
if index != -1:
# Если последовательность найдена, возвращаем её позицию
return index
# Оставляем в буфере последние байты на случай, если последовательность пересекает границу порций
buffer = data[-len(sequence) + 1:]
# Если последовательность не найдена, возвращаем -1
return -1