我收到“对象没有属性”错误。AttributeError:数组对象没有属性“read“。所附代码如下。请指导我如何解决这个错误。
import os
from functools import reduce
import numpy
import array
from utils import *
def load_raw_data_with_mhd(filename):
meta_dict = read_meta_header(filename)
dim = int(meta_dict['NDims'])
assert(meta_dict['ElementType']=='MET_FLOAT')
arr = [int(i) for i in meta_dict['DimSize'].split()]
volume = reduce(lambda x,y: x*y, arr[0:dim-1], 1)
pwd = os.path.split(filename)[0]
if pwd:
data_file = pwd +'/' + meta_dict['ElementDataFile']
else:
data_file = meta_dict['ElementDataFile']
print (data_file)
fid = open(data_file,'rb')
binvalues = array.array('f')
binvalues.read(fid, volume*arr[dim-1])
if is_little_endian(): # assume data in file is always big endian
binvalues.byteswap()
fid.close()
data = numpy.array(binvalues, numpy.float)
data = numpy.reshape(data, (arr[dim-1], volume))
return (data, meta_dict)
1条答案
按热度按时间brccelvz1#
错误似乎是由行引起的
binvalues.read(fid一卷第一章)
。在这一行中,您尝试呼叫array.array对象上的read方法,但这个类别没有read方法。
若要修正这个错误,您可以使用数组模块的fromfile方法从档案读取数据,如下所示:
这应该会将二进制数据从文件读入array.array对象。
您也可以考虑使用struct模块从文件中读取二进制数据,因为这可能比使用array模块更有效。struct模块允许您指定要读取的二进制数据的格式,然后直接将数据读取到numpy数组中,而不必首先创建一个array.array对象。
例如,您可以使用下列程式码,透过struct模块从档案读取二进制数据:
然后可以在代码的其余部分使用该数据数组。