def copy(self, open_c_reader=False):
        """
        reader a deep copy of current reader with everything reset to initial state,
        the returned reader should not interfere with current reader

        :param open_c_reader: whether open_c_reader_or_not, default not open
        :return: a copied reader
        """

        return CsvReader(self.file_loc, self.data_type, self.init_params,
                         self.block_unit_size, self.disk_sector_size, open_c_reader, lock=self.lock)