Атрибут offset
Атрибут offset класса memmap возвращает
смещение в байтах от начала файла до начала
отображаемых данных. Это значение задаётся при
создании объекта memmap через параметр
offset и не может быть изменено после
создания объекта.
Синтаксис
memmap_object.offset
Пример
Создадим массив, сохраним его в файл и откроем
с помощью memmap со смещением:
import numpy as np
# Создаём массив и сохраняем в файл
arr = np.array([1, 2, 3, 4, 5])
arr.tofile('data.npy')
# Открываем файл со смещением 16 байт
mmap_arr = np.memmap('data.npy', dtype=np.int64, mode='r', offset=16)
# Выводим смещение
print(mmap_arr.offset)
Результат выполнения кода:
16
Пример
Создадим два объекта memmap с разными смещениями
для одного файла:
import numpy as np
# Создаём массив из 10 элементов и сохраняем
arr = np.arange(10)
arr.tofile('data.bin')
# Создаём два memmap с разными смещениями
mmap1 = np.memmap('data.bin', dtype=np.int64, mode='r', offset=0)
mmap2 = np.memmap('data.bin', dtype=np.int64, mode='r', offset=16)
print(mmap1.offset)
print(mmap2.offset)
Результат выполнения кода:
0
16
Пример
Используем атрибут offset для проверки, с какого
места в файле начинаются данные:
import numpy as np
# Создаём файл с заголовком и данными
header = b'HEADER'
data = np.array([10, 20, 30, 40], dtype=np.int32)
with open('data_with_header.bin', 'wb') as f:
f.write(header)
data.tofile(f)
# Открываем файл, пропуская заголовок
mmap_arr = np.memmap('data_with_header.bin', dtype=np.int32, mode='r', offset=6)
print(f"Data starts at offset: {mmap_arr.offset}")
print(f"Data array: {mmap_arr}")
Результат выполнения кода:
"Data starts at offset: 6"
"Data array: [10 20 30 40]"