accessvg.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. # -*-coding:Latin-1 -*
  2. """enregistre et recupere les objets crees depuis une classe dans un dictionnaire"""
  3. import cPickle as pickle #lecture/ecriture d'objets dans un fichier
  4. #(cpickle remplace pickle, en + rapide)
  5. def sauver(nomObj, obj):
  6. """enregistre un objet. le nom du fichier est le nom de la classe de l'objet"""
  7. #on récupère le dictionnaire s'il existe, sinon on le cree
  8. fichier = "{}".format(obj.__class__.__name__)
  9. try:
  10. with open(fichier, 'rb') as input:
  11. dico = pickle.load(input)
  12. input.close()
  13. except IOError:
  14. dico = {}
  15. #on ajoute notre nouvel objet (en le renommant s'il existe déja)
  16. if dico.has_key(nomObj):
  17. k = 1
  18. while dico.has_key("{}{}".format(nomObj, k)):
  19. k += 1
  20. dico["{}{}".format(nomObj,k)]=obj
  21. else:
  22. dico[nomObj]=obj
  23. #on remet le dictionnaire dans le fichier
  24. with open(fichier, 'wb') as output:
  25. pickle.dump(dico, output, -1)
  26. output.close()
  27. chaine = "{} sauvegarde.".format(nomObj)
  28. return chaine
  29. def recup(fichier, nomObj):
  30. """recupere un objet enregistre"""
  31. fichier = "{}".format(fichier)
  32. #on recupere le dictionnaire
  33. retour = None
  34. try:
  35. with open(fichier, 'rb') as input:
  36. dico = pickle.load(input)
  37. retour = dico[nomObj]
  38. input.close()
  39. except IOError:
  40. retour = ("Erreur: objet {} - {} introuvable".format(fichier, nomObj))
  41. return retour
  42. def afficheSvg(fichier):
  43. """renvoie le contenu enregistre dans un fichier"""
  44. #on récupère le dictionnaire s'il existe
  45. try:
  46. with open(fichier, 'rb') as input:
  47. dico = pickle.load(input)
  48. input.close()
  49. #on met en forme le retour:
  50. chaine = ""
  51. for clef in dico.keys():
  52. chaine = chaine + "\n '{}': {}".format(clef,dico[clef])
  53. except IOError:
  54. chaine = "Erreur pour afficher la sauvegarde du fichier {}".format(fichier)
  55. return chaine
  56. def supprSvg(fichier, nomObj):
  57. """supprime un objet enregistré dans le fichier"""
  58. fichier = "{}".format(fichier)
  59. try:
  60. #on recupere le dictionnaire
  61. with open(fichier, 'rb') as input:
  62. dico = pickle.load(input)
  63. input.close()
  64. #on supprime l'enregistrement
  65. del dico[nomObj]
  66. #on remet le dictionnaire dans le fichier
  67. with open(fichier, 'wb') as output:
  68. pickle.dump(dico, output, -1)
  69. output.close()
  70. chaine = "{} supprimé.".format(nomObj)
  71. except IOError:
  72. chaine = "Erreur: {} non trouve dans le fichier {}.".format(nomObj, fichier)
  73. pass
  74. return chaine