Question sauvegarde de set
Résolu/Fermé
A voir également:
- Question sauvegarde de set
- Set-top box - Accueil - Box & Connexion Internet
- Logiciel de sauvegarde - Guide
- Sauvegarde android - Guide
- Sauvegarde facile - Télécharger - Sauvegarde
- Sauvegarde time machine - Guide
4 réponses
mamiemando
Messages postés
33372
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 802
4 févr. 2022 à 13:49
4 févr. 2022 à 13:49
Bonjour,
Effectivement, tu peux stocker tes éléments dans un
Par rapport au code que tu proposes, plutôt que de s'embêter avec
Note que tu peux aussi considérer des formats de stockage binaires (souvent plus compacts et plus rapides à charger) par exemple en utilisant
Une manière plus élégante de procéder, c'est d'utiliser
Tu peux aussi comme le propose yg_be utiliser une base de donnée, même si ici ça me paraît inutilement compliqué. C'est souvent un stockage plus pratique qu'un fichier texte pour permettre des accès concurrents, en particulier quand la donnée est structurable sous forme de tables. Ici on parle d'une simple liste/ensemble. Note que pour gérer les doublons, il faudrait en plus faire des vérifications à l'insertion, bref ça n'est pas forcément le plus pratique.
Bonne chance
Effectivement, tu peux stocker tes éléments dans un
set, puis itérer sur cet ensemble pour réécrire ton fichier. Quand tu ouvres un fichier, je te recommande d'utiliser le context manager dedié (voir
with).
Par rapport au code que tu proposes, plutôt que de s'embêter avec
writetu peux directement utiliser
sys.stdout)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- filename = "prenoms.txt" prenoms = set() with open(filename, "r") as f: for line in f.readlines(): prenom = line.strip() prenoms.add(prenom) prenoms.add("Jessica") with open(filename, "w") as f: print("\n".join(prenoms), file=f)
Note que tu peux aussi considérer des formats de stockage binaires (souvent plus compacts et plus rapides à charger) par exemple en utilisant
pickle. le problème c'est que pickle ne gère pas les
sets donc on est obligé de passer d'y sauver une liste et de la convertir en
set.
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import pickle filename = "prenoms.pkl" try: with open(filename, "rb") as f: prenoms = set(pickle.load(f)) except: prenoms = {"Léa", "Marc", "Maya"} print(prenoms) prenoms.add("Jessica") with open(filename, "wb") as f: pickle.dump(list(prenoms), f)
Une manière plus élégante de procéder, c'est d'utiliser
dill, qui lui supporte les
set. Son inconvénient (et qui explique peut être pourquoi
pickleest encore utilisé), c'est qu'il n'est pas installé de base (il faut donc l'installer via PIP, e.g.
sudo pip3 install dillou sous Linux via son gestionnaire de paquets, e.g.
sudo apt install python3-dill). Bref, voici à quoi ça ressemble, comme tu peux le voir c'est presque le même code :
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import pickle filename = "prenoms.dill" try: with open(filename, "rb") as f: prenoms = dill.load(f) except: prenoms = {"Léa", "Marc", "Maya"} print(prenoms) prenoms.add("Jessica") with open(filename, "wb") as f: dill.dump(prenoms, f)
Tu peux aussi comme le propose yg_be utiliser une base de donnée, même si ici ça me paraît inutilement compliqué. C'est souvent un stockage plus pratique qu'un fichier texte pour permettre des accès concurrents, en particulier quand la donnée est structurable sous forme de tables. Ici on parle d'une simple liste/ensemble. Note que pour gérer les doublons, il faudrait en plus faire des vérifications à l'insertion, bref ça n'est pas forcément le plus pratique.
Bonne chance
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
3 févr. 2022 à 20:37
3 févr. 2022 à 20:37
bonjour,
l'étape suivante, je pense, c'est la création du set au démarrage du programme.
l'étape suivante, je pense, c'est la création du set au démarrage du programme.
Ça voudrait dire que au début du programme, je crée un set dans le quel j'ajoute tout les éléments de mon doc puis a la fin je relance ce que contient mon doc par ce que contient mon set? Merci beaucoup, je vais faire ça
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
4 févr. 2022 à 12:20
4 févr. 2022 à 12:20
Une autre possibilité serait d'enregistrer les prénoms dans un base de données.