def __init__( self, db_name, db_ext=None, read_only=False, database_default_func=None, clear=False, stringify_keys=False, **kwargs ): MemDict.__init__( self, db_name, read_only=read_only, stringify_keys=stringify_keys, database_default_func=database_default_func, **kwargs ) self._db_ext = db_ext if db_ext != None else get_default_file_ext() abs_dir_path = os.path.dirname(os.path.abspath(db_name)) dir_present = os.path.exists(abs_dir_path) if not dir_present: try: os.makedirs(abs_dir_path) except OSError: pass self._db_full_path = ".".join((os.path.abspath(db_name), self._db_ext)) file_present = os.path.exists(self._db_full_path) self.flag = "n" if clear else "r" if read_only and file_present else "c" self.closed = False self._db_file = shelve.open(self._db_full_path, flag=self.flag) if not clear: # Copy all elements into memory dict for key in self._db_file: self._database[key] = self._db_file[key] # We're done with the file for now self._db_file.close()
def _add_init_kwargs(self, kwargs): MemDict._add_init_kwargs(self, kwargs) kwargs["db_name"] = self._db_name kwargs["db_ext"] = self._db_ext