outilsSvg.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. #print (time() - t0)
  34. return chaine
  35. def enregistrerUnique(obj, fichier = "", remplacer = True):
  36. """comme enregistrer, mais stocke l'objet dans un fichier a part (ex: plateau)"""
  37. if len(fichier) == 0 :
  38. fichier = "{}".format(obj.__class__.__name__)
  39. with open(fichier, 'wb') as output:
  40. pickle.dump(obj, output, protocol=pickle.HIGHEST_PROTOCOL)
  41. output.close()
  42. def charger(fichier, nomObj):
  43. """recupere un objet enregistre"""
  44. fichier = "{}".format(fichier)
  45. #on recupere le dictionnaire
  46. retour = None
  47. try:
  48. with open(fichier, 'rb') as input:
  49. dico = pickle.load(input)
  50. retour = dico[nomObj]
  51. input.close()
  52. except IOError:
  53. retour = None
  54. return retour
  55. def chargerUnique(fichier):
  56. """comme charger, mais charge un objet stocke dans un fichier a part (ex: plateau)"""
  57. fichier = "{}".format(fichier)
  58. #on recupere l'objet
  59. try:
  60. with open(fichier, 'rb') as input:
  61. objet = pickle.load(input)
  62. input.close()
  63. except IOError:
  64. objet = None
  65. return objet
  66. def afficheSvg(fichier):
  67. """renvoie le contenu enregistre dans un fichier"""
  68. #on récupère le dictionnaire s'il existe
  69. try:
  70. with open(fichier, 'rb') as input:
  71. dico = pickle.load(input)
  72. input.close()
  73. #on met en forme le retour:
  74. #chaine = ""
  75. #for clef in dico.keys():
  76. # chaine = chaine + "\n '{}': {}".format(clef,dico[clef])
  77. except IOError:
  78. #chaine = "Erreur pour afficher la sauvegarde du fichier {}".format(fichier)
  79. dico = {}
  80. return dico
  81. def supprSvg(fichier, nomObj):
  82. """supprime un objet enregistré dans le fichier"""
  83. fichier = "{}".format(fichier)
  84. try:
  85. #on recupere le dictionnaire
  86. with open(fichier, 'rb') as input:
  87. dico = pickle.load(input)
  88. input.close()
  89. #on supprime l'enregistrement
  90. del dico[nomObj]
  91. #on remet le dictionnaire dans le fichier
  92. with open(fichier, 'wb') as output:
  93. pickle.dump(dico, output, -1)
  94. output.close()
  95. chaine = "{} supprimé.".format(nomObj)
  96. except IOError:
  97. chaine = "Erreur: {} non trouve dans le fichier {}.".format(nomObj, fichier)
  98. pass
  99. return chaine