outilsSvg.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 (cpickle remplace pickle, en + rapide)
  4. #import pickle
  5. def enregistrer(nomObj, obj, fichier = "", remplacer = True):
  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. #t0 = time()
  9. if len(fichier) == 0 :
  10. fichier = "{}".format(obj.__class__.__name__)
  11. try:
  12. with open(fichier, 'rb') as f:
  13. dico = pickle.load(f)
  14. f.close()
  15. except IOError:
  16. dico = {}
  17. #on ajoute notre nouvel objet (si remplacer est faux, en le renommant s'il existe déja)
  18. if dico.has_key(nomObj) and not remplacer:
  19. k = 1
  20. while dico.has_key("{}{}".format(nomObj, k)):
  21. k += 1
  22. dico["{}{}".format(nomObj,k)]=obj
  23. else:
  24. dico[nomObj]=obj
  25. #on remet le dictionnaire dans le fichier
  26. with open(fichier, 'wb') as f:
  27. pickle.dump(dico, f, protocol=pickle.HIGHEST_PROTOCOL)
  28. f.close()
  29. chaine = "{} sauvegarde.".format(nomObj)
  30. return chaine
  31. def enregistrerUnique(obj, fichier = "", remplacer = True):
  32. """comme enregistrer, mais stocke l'objet dans un fichier a part (ex: plateau)"""
  33. if len(fichier) == 0 :
  34. fichier = "{}".format(obj.__class__.__name__)
  35. with open(fichier, 'wb') as f:
  36. pickle.dump(obj, f, protocol=pickle.HIGHEST_PROTOCOL)
  37. f.close()
  38. def charger(fichier, nomObj):
  39. """recupere un objet enregistre"""
  40. fichier = "{}".format(fichier)
  41. #on recupere le dictionnaire
  42. retour = None
  43. try:
  44. with open(fichier, 'rb') as f:
  45. dico = pickle.load(f)
  46. retour = dico[nomObj]
  47. f.close()
  48. except IOError:
  49. retour = None
  50. return retour
  51. def chargerUnique(fichier):
  52. """comme charger, mais charge un objet stocke dans un fichier a part (ex: plateau)"""
  53. fichier = "{}".format(fichier)
  54. #on recupere l'objet
  55. try:
  56. with open(fichier, 'rb') as f:
  57. objet = pickle.load(f)
  58. f.close()
  59. except IOError:
  60. objet = None
  61. return objet
  62. def afficheSvg(fichier):
  63. """renvoie le contenu enregistre dans un fichier"""
  64. #on récupère le dictionnaire s'il existe
  65. try:
  66. with open(fichier, 'rb') as f:
  67. dico = pickle.load(f)
  68. f.close()
  69. #on met en forme le retour:
  70. #chaine = ""
  71. #for clef in dico.keys():
  72. # chaine = chaine + "\n '{}': {}".format(clef,dico[clef])
  73. except IOError:
  74. #chaine = "Erreur pour afficher la sauvegarde du fichier {}".format(fichier)
  75. dico = {}
  76. return dico
  77. def supprSvg(fichier, nomObj):
  78. """supprime un objet enregistré dans le fichier"""
  79. fichier = "{}".format(fichier)
  80. try:
  81. #on recupere le dictionnaire
  82. with open(fichier, 'rb') as f:
  83. dico = pickle.load(f)
  84. f.close()
  85. #on supprime l'enregistrement
  86. del dico[nomObj]
  87. #on remet le dictionnaire dans le fichier
  88. with open(fichier, 'wb') as f:
  89. pickle.dump(dico, f, -1)
  90. f.close()
  91. chaine = "{} supprimé.".format(nomObj)
  92. except IOError:
  93. chaine = "Erreur: {} non trouve dans le fichier {}.".format(nomObj, fichier)
  94. pass
  95. return chaine