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)