2015-11-19 54 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