added close() method, fixed bug for -1 sized steps

This commit is contained in:
Michael Stumpf (ifhcluster) 2019-12-06 15:41:35 +01:00
parent 7b8ed3e9af
commit d4aae06f34
1 changed files with 10 additions and 3 deletions

View File

@ -64,11 +64,11 @@ class UCF:
self.__timeStep[istep] = self.__currentStepTime
self.__posStep[istep] = self.__fileID.tell()
self.__numSetPerStep[istep] = self.__currentStepNumSet
istep = istep+1
if self.__currentStepSize==-1:
break
else:
self.__fileID.seek(self.__currentStepSize,1)
istep = istep+1
nstep = istep
# Truncate buffered arrays
@ -83,6 +83,11 @@ class UCF:
self.NumTimestep = nstep;
self.__isFileHeaderWritten = 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):
"""Initialize a buffer to generate a new UCF file."""
@ -244,6 +249,8 @@ class UCF:
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."""
if not self.__inputAvailable:
raise IOError('No input file available')
self.__fileID.seek(self.__findSet(step,dset),0)
self.__readHeaderSet();
params = self.__currentSetParams
@ -269,14 +276,14 @@ class UCF:
if currentMagic==self.__magicFile:
break
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
# Read header
self.__fileID.seek(self.__fileBeg,0);
buff = self.__fileID.read(self.__nHeaderFile*8)
header = struct.unpack("%s%dq"%(self.Endian,8),buff)
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)
# Parse version
self.__versionMajor = np.floor(header[1]/self.__factorMajor)