Я пишу программу для обработки некоторых двоичных файлов. Раньше я использовал numpy.fromfile
, и все работало нормально, пока не наткнулся на какой-то большой двоичный файл (> 2 ГБ), поскольку numpy не может прочитать их (проблемы с памятью) после неудачной попытки с h5py, так как я не понял, как конвертировать мои файлы в файлы h5. Я пытался использовать open()
, read()
и struct.unpack_from
, чтобы восстановить данные, как я сделал бы в c ++.
Мои двоичные файлы представляют 32-разрядные числа с плавающей точкой, которые должны быть соединены в 64-битный комплекс.
Проблема на данный момент в том, что даже если из информации, которую я собрал, struct.unpack_from()
должен вернуть кортеж со всеми данными указанного типа в файле, он возвращает только первый элемент файла :
Код:
f1 = open(IQ_File, 'rb')
a1 = f1.read()
f = struct.unpack_from('f', a1)
print(f)
Я ожидаю, что здесь вывод с бинарным задним числом с плавающей запятой, однако мой вывод только:
(-0.057812511920928955,)
- - кортеж, содержащий только первое плавание файла.
Я действительно не понимаю, что я делаю здесь неправильно. Что я должен делать по-другому?