Сообщить об ошибке.

Запись/чтение массива array() в/из файл(а)

Содержимое массива array.array() может быть записано и прочитано из файлов с использованием встроенных методов.

Пример:

Этот пример иллюстрирует чтение данных непосредственно из двоичного файла. Удобно то, что не нужно преобразовать прочитанные байты в соответствующие типы.

import array
import binascii
import tempfile

a = array.array('i', range(5))
print('A1:', a)

# Записать массив чисел во временный файл
output = tempfile.NamedTemporaryFile()
a.tofile(output.file)
output.flush()

# Чтение необработанных данных
with open(output.name, 'rb') as input:
    raw_data = input.read()
    print('Raw Contents:', binascii.hexlify(raw_data))

    # Считать данные в массив
    input.seek(0)
    a2 = array.array('i')
    a2.fromfile(input, len(a))
    print('A2:', a2)

# A1: array('i', [0, 1, 2, 3, 4])
# Raw Contents: b'0000000001000000020000000300000004000000'
# A2: array('i', [0, 1, 2, 3, 4])

Метод array.tofile() использует array.tobytes() для форматирования данных, а метод array.fromfile() использует array.frombytes() для преобразования его обратно в экземпляр массива. И array.tobytes() и array.frombytes() работают со строками байтов, а не со строками Unicode.

import array
import binascii

a = array.array('i', range(5))
print('A1:', a)

as_bytes = a.tobytes()
print('Bytes:', binascii.hexlify(as_bytes))

a2 = array.array('i')
a2.frombytes(as_bytes)
print('A2:', a2)

# A1: array('i', [0, 1, 2, 3, 4])
# Bytes: b'0000000001000000020000000300000004000000'
# A2: array('i', [0, 1, 2, 3, 4])