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*:
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()
Cela me donne un fichier «*log2020-05-04.txt*» avec dedans ces infos par exemple*:
{('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*:
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)
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
 
	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
J’ai fait des tests de mise en forme des données (avec ""; sans {}, espace, ...) mais cela ne fonctionne pas.
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*:
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
Merci du coup de neurones*!