Je voulais me lancer en faisant un petit bulletin de note avec une structure de données spéciale qui est le dictionnaire (bien adapté pour lier les matières à la liste de notes)
def afficher_notes():
dictionnaire=appeler_dictionnaire(fichier)
for (matiere,notes) in dictionnaire:
print(matiere)
print('-'*40)
print('Note'.ljust(20),'Coefficient'.ljust(20))
for (note,coefficient) in notes:
print(note.ljust(20), coefficient.ljust(20))
J'imagine très bien que mon dictionnaire est retourné comme un STR. Et je n'ai pas trouvé (même la doc en anglais) comment pouvoir le retourné en dictionnaire, comme tel, ça n'existe peut-être pas
Comment puis-je faire ? Ou sinon, une autre manière de stocker l'information de façon permanente (je n'ai aucune idée en faite...) ?
Tu peux utiliser literal eval pour ça, cependant je pense qu'il vaudrait mieux dans ton cas l'encoder d'une autre manière, genre un bon csv. Si jamais ça t'intéresses, tu pourrais regarder ce que tu peux faire avec la librairie pandas. C'est adapté pour ces structures.
Je ne vois pas du tout ce que vient faire le module ast dans ce sujet ?
La meilleure solution reste, comme dans 90% des cas où il est question d'enregistrer des données structurées dans un fichier texte, le module json :
import json
notes = { 'a' : [(1, 2), (2, 1)], 'b' : [(2, 2), (1, 1)] }
# Enregistrer le dictionnaire dans un fichier :
with open('notes.txt', 'w') as file:
json.dump(notes, file)
# Charger le dictionnaire depuis un fichier :
with open('notes.txt', 'r') as file:
notes = json.load(file)
def appeler_dictionnaire(fichier):
with open(fichier, 'r',encoding='utf-8') as file:
notes = json.load(file)
return notes
def sauvegarder(dictionnaire):
with open('notes.txt', 'w',encoding='utf-8') as file:
json.dump(dictionnaire, file)
et l'erreur qu'il me renvoie est :
File "notes.py", line 9, in appeler_dictionnaire
notes = json.load(file)
File "json\__init__.py", line 268, in load
File "json\__init__.py", line 319, in loads
File "json\decoder.py", line 339, in decode
File "json\decoder.py", line 357, in raw_decode
json.decoder.JSONDecodeError: Expecting value: line 1 column 13 (char 12)
Appuyez sur une touche pour continuer...
Expecting value ? Il manque pourtant rien de ce que j'ai vu sur la doc... Ai-je mal compris le load ?
The pickle module is not secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.
Merci pour toutes ces réponses ! toutes très efficaces !
Merci celthon, c'est ce qui me manquait, ducoup j'ai simplement utilisé les index pour récupérer mes valeurs.
@talpa : je prend note !!! C'est pas mal comme truc, je l'ai mis dans un fichier sur mon pc, ça me servira surement !
@oldProgrammer : Merci à toi aussi pour cette précision. J'ai choisis Json ducoup, vu que celthon a vite répondu. Ne pas utiliser pickle, c'est ce que je retiens
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Site personnel : Julien Gidel - AutoMate - PHPresentation
Site personnel : Julien Gidel - AutoMate - PHPresentation
Site personnel : Julien Gidel - AutoMate - PHPresentation
Site personnel : Julien Gidel - AutoMate - PHPresentation