Атрибут mode
Атрибут mode класса memmap возвращает строку, которая определяет режим доступа к файлу, используемый при создании объекта memory-mapped файла. Этот атрибут доступен только для чтения и позволяет определить, был ли файл открыт для чтения, записи или чтения-записи.
Синтаксис
memmap_object.mode
Атрибут возвращает одно из следующих значений:
-
'r'- файл открыт только для чтения -
'r+'- файл открыт для чтения и записи -
'w+'- файл открыт для чтения и записи, с созданием нового файла -
'c'- файл открыт в режиме копирования при записи (copy-on-write)
Пример
Давайте создадим memory-mapped файл в режиме чтения-записи и проверим его атрибут mode:
import numpy as np
# Create a sample array and save it to a file
arr = np.array([1, 2, 3, 4, 5])
arr.tofile('data.npy')
# Create memmap object in read-write mode
mmap = np.memmap('data.npy', dtype=np.int64, mode='r+')
print(mmap.mode)
Результат выполнения кода:
"r+"
Пример
Рассмотрим различные режимы доступа и соответствующие им значения атрибута mode:
import numpy as np
# Create a sample array
arr = np.array([1, 2, 3, 4, 5])
arr.tofile('data.npy')
# Read-only mode
mmap_r = np.memmap('data.npy', dtype=np.int64, mode='r')
print(f"Read-only mode: {mmap_r.mode}")
# Read-write mode
mmap_rw = np.memmap('data.npy', dtype=np.int64, mode='r+')
print(f"Read-write mode: {mmap_rw.mode}")
# Write-create mode
mmap_w = np.memmap('data_new.npy', dtype=np.int64, mode='w+', shape=(5,))
print(f"Write-create mode: {mmap_w.mode}")
# Copy-on-write mode
mmap_c = np.memmap('data.npy', dtype=np.int64, mode='c')
print(f"Copy-on-write mode: {mmap_c.mode}")
Результат выполнения кода:
"Read-only mode: r"
"Read-write mode: r+"
"Write-create mode: w+"
"Copy-on-write mode: c"
Пример
Атрибут mode может быть полезен для проверки прав доступа перед выполнением операций записи:
import numpy as np
# Create a read-only memmap
arr = np.array([10, 20, 30, 40, 50])
arr.tofile('readonly.npy')
mmap = np.memmap('readonly.npy', dtype=np.int64, mode='r')
# Check mode before attempting to modify
if mmap.mode == 'r':
print("File is read-only. Cannot modify data.")
else:
mmap[0] = 100
print(f"Mode: {mmap.mode}")
Результат выполнения кода:
"File is read-only. Cannot modify data."
"Mode: r"