У меня есть набор zip-файлов, который содержит несколько двоичных и текстовых файлов в формате ieee-be. Я использовал модуль Pythons ZipFile и могу извлечь содержимое текстового файла
def readPropFile(myZipFile):
zf = zipfile.ZipFile(myZipFile,'r') # Open zip file for reading
zFileList=zf.namelist() # extract list of files embedded in _myZipFile_
# text files in _myZipFile_ contain the word 'properties' so
# get a list of the property files here
for f in zFileList:
if f.find('properties')>0:
propFileList.append(f)
# open first file in propFileList
pp2 = cStringIO.StringIO(zf.read(propFileList[0]))
fileLines = []
for ll in pp2:
fileLines.append(ll)
# return the lines in the property text file
return fileLines
Теперь я хотел бы сделать то же самое, кроме чтения данных в двоичных файлах и создания массива с плавающей точкой. Так как мне поступить?
Обновление 1
Формат двоичных файлов таков, что в MATLAB I после извлечения их во временную папку я могу прочитать их со следующим
>>fid=fopen('dataFile.bin','r','ieee-be');
>>dat=fread(fid,[1 inf],'float');
Обновление 2
Теперь у меня есть простая функция при попытке прочитать двоичные данные, что-то вроде
def readBinaryFile(myZipFile):
zFile = zipfile.ZipFile(myZipFile,'r')
dataFileName = 'dataFile.bin'
stringData = zFile.read(dataFileName)
ss=stringData[0:4]
data=struct.unpack('>f',ss)
но полученное мной значение соответствует значению, указанному в MATLAB.
Обновление 3
первый всплеск в моем двоичном файле
- HEX значение: BD 98 99 3D
- float: -.07451103