у меня есть некоторые большие двоичные файлы, которые я должен искать определенные последовательности байтов в пределах, например:найти ByteArray в ByteArray с групповыми символами
find_bytes = bytearray(base64.b16decode('a226fb42'))
with open(filename, "rb") as f:
file_bytes = bytearray(f.read())
found_pos = file_bytes.find(find_bytes, 0)
Это прекрасно работает, только теперь я хочу, чтобы иметь возможность обозначить конкретный (например, 00 или FF) в последовательности в качестве подстановочного знака, который будет соответствовать любому байту, поэтому a2000042
должен соответствовать любой последовательности из 4 байтов, начиная с a2
и заканчивая 42
.
Есть ли способ расширить метод find
, чтобы сделать это, или лучшее решение?
Использование Python 2.7, но готов перейти в случае необходимости ..
Так что это довольно хорошо, не знаю, регулярные выражения могут работать на bytearrays. Я попробую и испытаю производительность. – snowcrash09
Файлы ~ 1 ГБ, а производительность не заметно хуже, чем без регулярного выражения. Благодаря! – snowcrash09