| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # -*-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
-
|