outilsSvg.py 3.6 KB

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