| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- # -*-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)
- #import pickle
- def enregistrer(nomObj, obj, fichier = "", remplacer = True):
- """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
- #t0 = time()
- if len(fichier) == 0 :
- fichier = "{}".format(obj.__class__.__name__)
-
- try:
- with open(fichier, 'rb') as f:
- dico = pickle.load(f)
- f.close()
- except IOError:
- dico = {}
-
- #on ajoute notre nouvel objet (si remplacer est faux, en le renommant s'il existe déja)
- if dico.has_key(nomObj) and not remplacer:
- 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 f:
- pickle.dump(dico, f, protocol=pickle.HIGHEST_PROTOCOL)
- f.close()
- chaine = "{} sauvegarde.".format(nomObj)
- return chaine
- def enregistrerUnique(obj, fichier = "", remplacer = True):
- """comme enregistrer, mais stocke l'objet dans un fichier a part (ex: plateau)"""
- if len(fichier) == 0 :
- fichier = "{}".format(obj.__class__.__name__)
- with open(fichier, 'wb') as f:
- pickle.dump(obj, f, protocol=pickle.HIGHEST_PROTOCOL)
- f.close()
- def charger(fichier, nomObj):
- """recupere un objet enregistre"""
- fichier = "{}".format(fichier)
- #on recupere le dictionnaire
- retour = None
- try:
- with open(fichier, 'rb') as f:
- dico = pickle.load(f)
- retour = dico[nomObj]
- f.close()
- except IOError:
- retour = None
- return retour
- def chargerUnique(fichier):
- """comme charger, mais charge un objet stocke dans un fichier a part (ex: plateau)"""
- fichier = "{}".format(fichier)
- #on recupere l'objet
- try:
- with open(fichier, 'rb') as f:
- objet = pickle.load(f)
- f.close()
- except IOError:
- objet = None
- return objet
- 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 f:
- dico = pickle.load(f)
- f.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)
- dico = {}
- return dico
- def supprSvg(fichier, nomObj):
- """supprime un objet enregistré dans le fichier"""
- fichier = "{}".format(fichier)
- try:
- #on recupere le dictionnaire
- with open(fichier, 'rb') as f:
- dico = pickle.load(f)
- f.close()
- #on supprime l'enregistrement
- del dico[nomObj]
- #on remet le dictionnaire dans le fichier
- with open(fichier, 'wb') as f:
- pickle.dump(dico, f, -1)
- f.close()
- chaine = "{} supprimé.".format(nomObj)
- except IOError:
- chaine = "Erreur: {} non trouve dans le fichier {}.".format(nomObj, fichier)
- pass
- return chaine
-
|