2016-11-20 3 views
1

При попытке распаковать данные, которые я прочитал из файла, я получаю MemoryError. Я хочу иметь возможность читать каждый байт, поэтому я его распаковываю. Когда я распаковываю только 1 байт, он работает, но когда я хочу прочитать весь дамп (total_size), он дает ошибку. Я понятия не имею, что делать.Python MemoryError on struct.unpack

def read_memory(self, mem_file, address, byte_count): 
     mem_file.seek(address) 
     data = mem_file.read(byte_count) 
     return data 

memory_dump = self.read_memory(mem_file, start_addr, total_size) 
unpacked = struct.unpack("{}B".format(total_size), memory_dump) # MemoryError 

Как это исправить?

+1

Почему вы распаковываете 'данные'? если 'data' является байтовым (вероятным), то он уже является байтовой последовательностью. Как вы используете 'unpacked' позже? Если вам нужен объект, который выглядит так, как будто вы читаете весь файл, вы можете попробовать «mmap» (даже если файл не помещается в память, если он вписывается в адресное пространство). – jfs

+0

@ J.F.Sebastian Я хочу сравнить каждый байт с элементом в bytearray. но memory_dump [0], например, это «\ x7f», и я не могу сравнить это с байтом. Как я могу это сделать? –

+0

Хорошо, я исправил его с помощью hexlify. Спасибо за предложение! –

ответ

1

Похоже, мне не хватило ОЗУ

Смежные вопросы