Projet programmation
Résolu/Fermé
Utilisateur anonyme
-
9 mai 2020 à 23:36
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 - 11 mai 2020 à 00:08
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 - 11 mai 2020 à 00:08
A voir également:
- Projet programmation
- Application de programmation - Guide
- Filigrane projet - Guide
- Exemple d'un projet déjà monté - Forum Programmation
- Logiciel programmation clé voiture gratuit - Forum Programmation
6 réponses
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
Modifié le 10 mai 2020 à 00:53
Modifié le 10 mai 2020 à 00:53
Bonsoir Yaleck,
Pour récupérer tes données sauvegardées, le plus facile serait de les stocker dans un fichier csv, l'accès sera plus facile par la suite. Pour cela tu as le module
Le format bien structuré de ton fichier Ewallet.txt tel que tu l'as conçu, je l'aurais vu davantage pour un fichier visible du client, comme un relevé de compte, donc sans le mot de passe.
Ceci étant dit, si tu souhaites conserver ton format de fichier, tu peux le relire comme indiqué ici :
https://stackoverflow.com/questions/8369219/how-to-read-a-text-file-into-a-string-variable-and-strip-newlines
mais tu auras ensuite quelques manipulations (peut-être fastidieuses à mettre en place) de chaines de caractères pour récupérer tout comme il faut.
Pour récupérer tes données sauvegardées, le plus facile serait de les stocker dans un fichier csv, l'accès sera plus facile par la suite. Pour cela tu as le module
csv. Tu trouveras des tas d'exemples sur internet. Par exemple : https://riptutorial.com/fr/csv/example/6947/lire-et-ecrire-en-python
Le format bien structuré de ton fichier Ewallet.txt tel que tu l'as conçu, je l'aurais vu davantage pour un fichier visible du client, comme un relevé de compte, donc sans le mot de passe.
Ceci étant dit, si tu souhaites conserver ton format de fichier, tu peux le relire comme indiqué ici :
https://stackoverflow.com/questions/8369219/how-to-read-a-text-file-into-a-string-variable-and-strip-newlines
mais tu auras ensuite quelques manipulations (peut-être fastidieuses à mettre en place) de chaines de caractères pour récupérer tout comme il faut.
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
10 mai 2020 à 01:49
10 mai 2020 à 01:49
Oui, n'hésite pas si tu as des questions. :-)
Comment veux-tu procéder : tu gardes le format que tu as défini dans ton fichier .txt ou tu préfères passer au format .csv ?
Comment veux-tu procéder : tu gardes le format que tu as défini dans ton fichier .txt ou tu préfères passer au format .csv ?
j'ai essayé les deux mais je n'y arrive pas, puisque mon code a besoin des classes pour les attributs. Même lorsque j'arrive à recréer une liste avec mes données, je n'arrive pas à les conserver en tant que classes Ewallet je ne peux donc pas les utiliser pour refaire mon fichier et là est tout mon problème.
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
10 mai 2020 à 14:13
10 mai 2020 à 14:13
Bonjour,
Je vais te proposer la version avec csv, mais tu peux aussi l'adapter avec ta structure de fichier :
Aide-toi des exemples qu'on trouve sur internet. Fais autant de
Si après tout ça, tu as toujours des blocages, poste ici l'extrait du code que tu as modifié et qui ne fonctionne pas. Je regarderai.
Courage ! :-)
Je vais te proposer la version avec csv, mais tu peux aussi l'adapter avec ta structure de fichier :
class Bank : def __init__(self): self.Liste_Ewallet = [] # tu ajoutes la lecture de ton fichier ici with open('Ewallet.csv','r') as csvEwallet: # pour chaque ligne du fichier, tu ajoutes ses éléments dans self.Liste_Ewallet. Les élements seront directement stockés dans une liste, ce qui sera facile à récupérer. # quelques lignes de code à écrire ici def saveBank(self): # j'ai remplacé ta version du fichier pour une écriture dans un csv with open('Ewallet.csv','w') as csvEwallet: # tu parcours ta Liste_Ewallet, et tu écris dans le csv
Aide-toi des exemples qu'on trouve sur internet. Fais autant de
Si après tout ça, tu as toujours des blocages, poste ici l'extrait du code que tu as modifié et qui ne fonctionne pas. Je regarderai.
Courage ! :-)
Utilisateur anonyme
10 mai 2020 à 17:48
10 mai 2020 à 17:48
On a essayé de garder le même format mais le problème qui arrive est que notre liste est en string et non un attribut ce qui nous empêche de les reprendre je pense que cela est pareil en cdv ou en txt. Qu'on penses tu ? On a utilisé ce code là :
def __init__(self): if os.path.exists(r'Ewallet.txt'): pw = open('Ewallet.txt','r') self.Liste_Ewallet = [] file_size = os.path.getsize('Ewallet.txt') x = 0; wallet_pos = 1 ; if file_size != 0: lines = pw.readlines() while x != len(lines): print(wallet_pos) self.Liste_Ewallet.append(lines[wallet_pos]) wallet_pos += 4 x += 1 if wallet_pos == len(lines) + 1: break else: self.Liste_Ewallet = [] def saveBank(self): pw = open('Ewallet.txt','w+') for index , elem in enumerate(self.Liste_Ewallet) : id_count, code_pin, amount_dispo = 'ID Ewallet', 'Code Pin', 'Amount Available' pw.write('{:<15} ¦ {:<15} ¦ {:<15} \n'.format(id_count,code_pin,amount_dispo)) pw.write('{}\n'.format(self.Liste_Ewallet[index].save())) pw.write("=============================================================================\n\n") pw.close()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
11 mai 2020 à 00:03
11 mai 2020 à 00:03
j'ai réussi
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
11 mai 2020 à 00:08
11 mai 2020 à 00:08
J'ai répondu un peu tard.
C'est très bien que tu aies réussi par toi-même. :-)
C'est très bien que tu aies réussi par toi-même. :-)
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
11 mai 2020 à 00:06
11 mai 2020 à 00:06
Au moment où tu arrives à cette ligne :
tu souhaites ajouter un objet Ewallet à partir des données déjà stockés.
Il faut créer un nouveau Ewallet via l'appel de la méthode __init__:
Il faut donc commencer par remplacer ta ligne de code à la ligne 12 par :
La question qui se pose à présent est de savoir comment transmettre les données de
Pour cela tu dois passer par exemple de :
Pour répondre à cela, tu peux utiliser la fonction
En résumé, tu remplaces ta ligne 12 par (à toi de compléter):
self.Liste_Ewallet.append(lines[wallet_pos])
tu souhaites ajouter un objet Ewallet à partir des données déjà stockés.
Il faut créer un nouveau Ewallet via l'appel de la méthode __init__:
Ewallet(Id, generatedCode, dispoAmount).
Il faut donc commencer par remplacer ta ligne de code à la ligne 12 par :
self.Liste_Ewallet.append(Ewallet(Id, generatedCode, dispoAmount))
La question qui se pose à présent est de savoir comment transmettre les données de
lines[wallet_pos]vers
Id,
generatedCodeet
dispoAmount?
Pour cela tu dois passer par exemple de :
lines[wallet_pos]qui vaut
11 ¦ 156290 ¦ 11.00à :
Id, generatedCode, dispoAmount = ['11', '156290', '11.00'](et ne pas oublier ensuite de transformer en int generatedCode et en float dispoAmount).
Pour répondre à cela, tu peux utiliser la fonction
splitpour couper ta ligne au niveau des
¦comme séparateurs. Ensuite il faudra enlever les espaces à gauche et à droite : la fonction
stripfait ça.
En résumé, tu remplaces ta ligne 12 par (à toi de compléter):
#utilisation de split et strip sur la ligne lines[wallet_pos] Id, generatedCode, dispoAmount = ___ generatedCode, dispoAmount = int(generatedCode), float(dispoAmount) self.Liste_Ewallet.append(Ewallet(Id, generatedCode, dispoAmount))
10 mai 2020 à 01:10