added close() method, fixed bug for -1 sized steps
This commit is contained in:
parent
7b8ed3e9af
commit
d4aae06f34
|
|
@ -64,11 +64,11 @@ class UCF:
|
||||||
self.__timeStep[istep] = self.__currentStepTime
|
self.__timeStep[istep] = self.__currentStepTime
|
||||||
self.__posStep[istep] = self.__fileID.tell()
|
self.__posStep[istep] = self.__fileID.tell()
|
||||||
self.__numSetPerStep[istep] = self.__currentStepNumSet
|
self.__numSetPerStep[istep] = self.__currentStepNumSet
|
||||||
|
istep = istep+1
|
||||||
if self.__currentStepSize==-1:
|
if self.__currentStepSize==-1:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
self.__fileID.seek(self.__currentStepSize,1)
|
self.__fileID.seek(self.__currentStepSize,1)
|
||||||
istep = istep+1
|
|
||||||
nstep = istep
|
nstep = istep
|
||||||
|
|
||||||
# Truncate buffered arrays
|
# Truncate buffered arrays
|
||||||
|
|
@ -83,6 +83,11 @@ class UCF:
|
||||||
self.NumTimestep = nstep;
|
self.NumTimestep = nstep;
|
||||||
self.__isFileHeaderWritten = True;
|
self.__isFileHeaderWritten = True;
|
||||||
self.__isStepHeaderWritten = True;
|
self.__isStepHeaderWritten = True;
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
"""Closes input file object"""
|
||||||
|
self.__fileID.close()
|
||||||
|
self.__init__
|
||||||
|
|
||||||
def initBuffer(self,rank=0,rankijk=(0,0,0),ftype=1999):
|
def initBuffer(self,rank=0,rankijk=(0,0,0),ftype=1999):
|
||||||
"""Initialize a buffer to generate a new UCF file."""
|
"""Initialize a buffer to generate a new UCF file."""
|
||||||
|
|
@ -244,6 +249,8 @@ class UCF:
|
||||||
|
|
||||||
def readSet(self,step=1,dset=1,memmap=False):
|
def readSet(self,step=1,dset=1,memmap=False):
|
||||||
"""Read a dataset from input file. If 'memmap' is activated, the file will only be read partially on demand."""
|
"""Read a dataset from input file. If 'memmap' is activated, the file will only be read partially on demand."""
|
||||||
|
if not self.__inputAvailable:
|
||||||
|
raise IOError('No input file available')
|
||||||
self.__fileID.seek(self.__findSet(step,dset),0)
|
self.__fileID.seek(self.__findSet(step,dset),0)
|
||||||
self.__readHeaderSet();
|
self.__readHeaderSet();
|
||||||
params = self.__currentSetParams
|
params = self.__currentSetParams
|
||||||
|
|
@ -269,14 +276,14 @@ class UCF:
|
||||||
if currentMagic==self.__magicFile:
|
if currentMagic==self.__magicFile:
|
||||||
break
|
break
|
||||||
if currentMagic!=self.__magicFile:
|
if currentMagic!=self.__magicFile:
|
||||||
raise ValueError("Magic mismatch: invalid file header. %l" % currentMagic)
|
raise ValueError('Magic mismatch: invalid file header. {}'.format(currentMagic))
|
||||||
self.Endian = fmt
|
self.Endian = fmt
|
||||||
# Read header
|
# Read header
|
||||||
self.__fileID.seek(self.__fileBeg,0);
|
self.__fileID.seek(self.__fileBeg,0);
|
||||||
buff = self.__fileID.read(self.__nHeaderFile*8)
|
buff = self.__fileID.read(self.__nHeaderFile*8)
|
||||||
header = struct.unpack("%s%dq"%(self.Endian,8),buff)
|
header = struct.unpack("%s%dq"%(self.Endian,8),buff)
|
||||||
if self.Debug:
|
if self.Debug:
|
||||||
print("Read the following file header at %d bytes" % 0,file=sys.stderr)
|
print('Read the following file header at 0 bytes',file=sys.stderr)
|
||||||
print(header,file=sys.stderr)
|
print(header,file=sys.stderr)
|
||||||
# Parse version
|
# Parse version
|
||||||
self.__versionMajor = np.floor(header[1]/self.__factorMajor)
|
self.__versionMajor = np.floor(header[1]/self.__factorMajor)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue