# -*-coding:Latin-1 -* """enregistre et recupere les objets crees depuis une classe dans un dictionnaire""" import cPickle as pickle #lecture/ecriture d'objets dans un fichier #(cpickle remplace pickle, en + rapide) def sauver(nomObj, obj): """enregistre un objet. le nom du fichier est le nom de la classe de l'objet""" #on récupère le dictionnaire s'il existe, sinon on le cree fichier = "{}".format(obj.__class__.__name__) try: with open(fichier, 'rb') as input: dico = pickle.load(input) input.close() except IOError: dico = {} #on ajoute notre nouvel objet (en le renommant s'il existe déja) if dico.has_key(nomObj): k = 1 while dico.has_key("{}{}".format(nomObj, k)): k += 1 dico["{}{}".format(nomObj,k)]=obj else: dico[nomObj]=obj #on remet le dictionnaire dans le fichier with open(fichier, 'wb') as output: pickle.dump(dico, output, -1) output.close() chaine = "{} sauvegarde.".format(nomObj) return chaine def recup(fichier, nomObj): """recupere un objet enregistre""" fichier = "{}".format(fichier) #on recupere le dictionnaire retour = None try: with open(fichier, 'rb') as input: dico = pickle.load(input) retour = dico[nomObj] input.close() except IOError: retour = ("Erreur: objet {} - {} introuvable".format(fichier, nomObj)) return retour def afficheSvg(fichier): """renvoie le contenu enregistre dans un fichier""" #on récupère le dictionnaire s'il existe try: with open(fichier, 'rb') as input: dico = pickle.load(input) input.close() #on met en forme le retour: chaine = "" for clef in dico.keys(): chaine = chaine + "\n '{}': {}".format(clef,dico[clef]) except IOError: chaine = "Erreur pour afficher la sauvegarde du fichier {}".format(fichier) return chaine def supprSvg(fichier, nomObj): """supprime un objet enregistré dans le fichier""" fichier = "{}".format(fichier) try: #on recupere le dictionnaire with open(fichier, 'rb') as input: dico = pickle.load(input) input.close() #on supprime l'enregistrement del dico[nomObj] #on remet le dictionnaire dans le fichier with open(fichier, 'wb') as output: pickle.dump(dico, output, -1) output.close() chaine = "{} supprimé.".format(nomObj) except IOError: chaine = "Erreur: {} non trouve dans le fichier {}.".format(nomObj, fichier) pass return chaine