Вы можете загрузить файл в строку и найти в этой строке последовательность байтов 0xffc0
, используя метод str.find()
.Это работает для любой последовательности байтов.
Код для этого зависит от нескольких вещей.Если вы открываете файл в двоичном режиме и используете Python 3 (оба из которых, вероятно, являются лучшими для этого сценария), вам нужно искать строку байтов (в отличие от строки символов), что означает, что вынеобходимо префикс строки с b
.
with open(filename, 'rb') as f:
s = f.read()
s.find(b'\xff\xc0')
Если вы откроете файл в текстовом режиме в Python 3, вам придется искать строку символов:
with open(filename, 'r') as f:
s = f.read()
s.find('\xff\xc0')
хотя для этого нет особой причины.Это не дает вам никаких преимуществ по сравнению с предыдущим способом, и если вы работаете на платформе, которая обрабатывает двоичные и текстовые файлы по-разному (например, Windows), есть вероятность, что это вызовет проблемы.
Python2 не делает различий между байтовыми строками и символьными строками, поэтому, если вы используете эту версию, не имеет значения, включаете ли вы или исключаете b
в b'\xff\xc0'
.И если ваша платформа обрабатывает двоичные файлы и текстовые файлы одинаково (например, Mac или Linux), не имеет значения, используете ли вы 'r'
или 'rb'
в качестве файлового режима.Но я бы по-прежнему рекомендовал использовать что-то вроде первого примера кода, приведенного выше, только для прямой совместимости - в случае, если вы когда-нибудь переключитесь на Python 3, исправить это будет на одну вещь меньше.