From d4aae06f3443d7f676f6fcfb5af136ce9697f5ed Mon Sep 17 00:00:00 2001 From: "Michael Stumpf (ifhcluster)" Date: Fri, 6 Dec 2019 15:41:35 +0100 Subject: [PATCH] added close() method, fixed bug for -1 sized steps --- python/ucf/ucf.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/python/ucf/ucf.py b/python/ucf/ucf.py index 70d3754..e8208e4 100644 --- a/python/ucf/ucf.py +++ b/python/ucf/ucf.py @@ -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)