Что эквивалентно MATLAB fread с параметром пропуска в Python? - PullRequest
1 голос
/ 10 июля 2020

Интересно, как я могу реализовать MATLAB

fread(fileID,sizeA,precision,skip)

в Python ( документация ). Есть много советов, как с этим бороться в случае

fread(fileID,sizeA,precision)

, но мне нужен параметр skip. Итак, я хочу получить

def fread(fileID,sizeA,precision,skip):
    # some code which do the same thing as matlab fread(fileID,sizeA,precision,skip)
    pass

Как это можно реализовать без символьного чтения?

1 Ответ

1 голос
/ 10 июля 2020

Вы можете использовать Python s struct module для анализа сложных двоичных структур, включая байты заполнения. Например, копируя Matlab do c, если вы хотите прочитать файл из 2 коротких int, за которыми следуют 2 байта pad:

import struct
fmt = "=hhxx" #native endianness and no alignment (=), two shorts (h), two pad bytes (x)
data = [x for x in struct.iter_unpack(fmt, open("nine.bin", "rb").read())]
## [(1, 2), (4, 5), (7, 8)]

Обратите внимание, что вывод struct.iter_unpack, а остальные распаковываются методы, это кортеж.

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