def seek(self, offset):
        """
        shifts on a given number of record in the original file
        :param offset: number of record
        """
        if self._shifts:
            if 0 <= offset < len(self._shifts):
                current_pos = self._file.tell()
                new_pos = self._shifts[offset]
                if current_pos != new_pos:
                    if current_pos == self._shifts[-1]:  # reached the end of the file
                        self._data = self.__reader()
                        self.__file = iter(self._file.readline, '')
                    self._file.seek(new_pos)
            else:
                raise IndexError('invalid offset')
        else:
            raise self._implement_error
def seek ( self , offset ) : if self . _shifts : if 0 <= offset < len ( self . _shifts ) : current_pos = self . _file . tell ( ) new_pos = self . _shifts [ offset ] if current_pos != new_pos : if current_pos == self . _shifts [ - 1 ] : self . _data = self . __reader ( ) self . __file = iter ( self . _file . readline , '' ) self . _file . seek ( new_pos ) else : raise IndexError ( 'invalid offset' ) else : raise self . _implement_error
shifts on a given number of record in the original file
        :param offset: number of record