Bonjour à toutes et à tous*!
J’utilise un linux basé sur debian avec python3
Je cherche à recharger un dictionnaire à partir d’un fichier texte (.txt) qui est créé par le programme. C’est en cas de coupure du programme, pour pouvoir reprendre sans perdre trop de données...
Donc en premier lieu
J’écris le contenu de mon dictionnaire «*ventes*» comme ceci*:
Cela me donne un fichier «*log2020-05-04.txt*» avec dedans ces infos par exemple*:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 nomfichierlog = "log" + date + ".txt" fichierlog = open(nomfichierlog, 'w') print(ventes, file = fichierlog) fichierlog.close()
{('TOTAL', 1): '6.00', ('Fer et métaux', 1): 1.0, ('Bricolage', 1): 2.0, ('Meubles', 1): 3.0, ('Bibelots et vaisselle', 1): 0, ('Textile, Fripes', 1): 0, ('Bibliothèque', 1): 0, ('Jeux et Sport', 1): 0, ('Petit et gros électro', 1): 0, ('Vélo et pièces détachées', 1): 0, ('Adhésions C2C', 1): 0, ('Dons C2C', 1): 0, ('Jardin', 1): 0, ('Matériel été', 1): 0}
Ensuite pour recharger les infos je tente de faire simplement ceci*:
Le programme lit correctement les infos mais il considère que «*ventes*» est une string et cela me pose problème plus loin, d’où la ligne du dessous ou je stipule que «*ventes*» est bien un dictionnaire, mais a l’exécution j’ai l’erreur suivante*:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 nomfichierlog = "log" + date + ".txt" with open(nomfichierlog, 'r') as donnees : ventes = donnees.readline() ventes = dict(ventes)
J’ai fait des tests de mise en forme des données (avec ""; sans {}, espace, ...) mais cela ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Traceback (most recent call last): File "UNIX-C2Caisse-0.10.py", line 461, in <module> ventes = dict(ventes) ValueError: dictionary update sequence element #0 has length 1; 2 is required
Les recherches sur l'erreur ne m'ont pas non plus aidée. J'ai essayé avec la fonction input de dict mais j'arrive au même résultat... Bref je sèche...
Dernière info qui me chiffonne, si je réalise la manip en console python cela fonctionne*:
Merci du coup de neurones*!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 >>> ventes = {} >>> ventes = {('TOTAL', 1): '2.00', ('Fer et métaux', 1): 2.0, ('Bricolage', 1): 0, ('Meubles', 1): 0, ('Bibelots et vaisselle', 1): 0, ('Textile, Fripes', 1): 0, ('Bibliothèque', 1): 0, ('Jeux et Sport', 1): 0, ('Petit et gros électro', 1): 0, ('Vélo et pièces détachées', 1): 0, ('Adhésions C2C', 1): 0, ('Dons C2C', 1): 0, ('Jardin', 1): 0, ('Matériel été', 1): 0} >>> type(ventes) <class 'dict'> >>> print(ventes['TOTAL',1]) 2.00
Partager