2015-11-19 3 views
1

У меня есть двоичный файл, содержащий столбец значений. Используя Python 3, я пытаюсь распаковать данные в массив или список.Распаковка двоичного файла с Python возвращает только одно значение

file = open('data_ch04.dat', 'rb') 

values = struct.unpack('f', file.read(4))[0] 

print(values) 

file.close() 

Приведенный выше код печатает только одно значение на консоль:

-1.1134038740480121e-29 

Как я могу получить все значения из двоичного файла?

Вот ссылка на двоичный файл на Dropbox:

https://www.dropbox.com/s/l69rhlrr9u0p4cq/data_ch04.dat?dl=0

ответ

2

Ваш код отображает только один float, потому что он читает только четыре байта.

Попробуйте это:

import struct 

# Read all of the data 
with open('data_ch04.dat', 'rb') as input_file: 
    data = input_file.read() 

# Convert to list of floats 
format = '{:d}f'.format(len(data)//4) 
data = struct.unpack(format, data) 

# Display some of the data 
print len(data), "entries" 
print data[0], data[1], data[2], "..." 
+0

Я заметил, что значения различны, если большой обратный порядок байт '> f' или прямой порядок байтов' wigging

+0

В общем, нет. Я хотел бы спросить у человека, который создал файл, что такое порядок байтов. Кроме того, вы можете запускать его в обоих направлениях и видеть, какой из них производит «разумные» номера. –

+0

Постараюсь узнать подробности о данных, но ваш пример, похоже, работает. Благодаря! – wigging

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