Python : comment stocker une variable

Fermé
Shulker - 25 févr. 2022 à 13:01
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 - 26 févr. 2022 à 19:30
Bonjour,
j'ai actuellement un petit problème avec un script en python : j'ai besoin de sauvegarder une variable afin que même après la fermeture de l'exécutable, la variable soit toujours en mémoire.
Petit exemple pour illustrer :
-j'ouvre mon fichier qui me demande mon âge ;
-je réponds que j'ai x ou y années ;
-je ferme la fenêtre ;
-lorsque je la ré-ouvre, on me dit mon âge.

Je ne sais pas du tout comment faire, j'ai fait quelques recherches sur le web, mais je n'ai rien trouvé de satisfaisant, et tout ce qui m'a paru convenable, je ne l'ai pas compris.

Merci d'avance pour votre aide,
Bonne journée !
Cordialement,

Configuration: Windows / Edge 98.0.1108.43
A voir également:

16 réponses

choubaka Messages postés 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
25 févr. 2022 à 16:52
Bonjour

file = open("unfichier.txt", "w") 
file.write("LeTexte") 
file.close()

1
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 Ambassadeur 1 556
25 févr. 2022 à 13:32
bonjour,
Cela dépend de combien de temps cela doit rester mémorisé.
Une solution simple, c'est d'écrire dans un fichier.
0
mais en fait, cette variable doit être régulièrement modifiée et le délai peut être de 1 mois comme de 5 min...
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 Ambassadeur 1 556
25 févr. 2022 à 14:37
Le fichier me semble donc une bonne idée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mais dc en fait comment il faut faire ? pck je suis débutant
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
25 févr. 2022 à 16:57
voici un exemple qui écrit puis lit l'age :
age=123
f=open("age.dat",'w')
f.write(str(age))
f.close
f=open("age.dat",'r')
age=int(f.readline())
f.close
print(age)
1
et au fait merci de votre aide
0
choubaka Messages postés 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
25 févr. 2022 à 17:06
le "w" signifie "write", il sert à indiquer que l'on va écrire dans le fichier...
si tu mets "a" à la place, "append", il va écrire à la suite.
0
Mais du cou p g regardé ça plus en détail et ça me convient. Seulement, ce programme sera distribué à plusieurs personnes sur plusieurs postes différents... Et ils ne peuvent pas partager ce meme fichier. Donc savez-vous comment faire ?
Faut-il créer un espace de stockage commun en ligne ?
0
choubaka Messages postés 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
25 févr. 2022 à 17:16
Faut-il créer un espace de stockage commun en ligne ?

forcément, oui ..
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
25 févr. 2022 à 17:20
Difficile de faire une suggestion adéquate sans aucune information.
0
Mais écoutez, je ne suis pas forcément un crack en informatique et donc est-ce que vous pourriez également m'expliquer comment faire. Je comprendrai toutefois un refus de votre part, vous m'avez déjà bien aidé.
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
25 févr. 2022 à 17:47
Sans être un crack, tu en sais beaucoup plus que nous sur ton environnement.
Et tu ne nous a pratiquement donné aucune information. Je suis certain que tu peux remplir une page avec des informations que nous ignorons.
0
le "w" signifie "write", il sert à indiquer que l'on va écrire dans le fichier...
si tu mets "a" à la place, "append", il va écrire à la suite.

D'accord, merci
0
et dc aussi comment faire pour que le fichier sur cet espace de tsockage soit séléctionné
0
Bon, pour être précis, je suis un élève de troisième participant à un "club anglais" ou nous regardons des films (en anglais...) pour nous améliorer. Dans ce club, le prof qui nous gère nous donne très régulièrement une des fiches de vocabulaire. Et il nous "certifie" lorsqu'on connaît une fiche entière en nous la faisant réciter. Le truc, c'est qu'il y a beaucoup d'élèves qui passent en récitation sans tout connaître parce qu'ils n'ont pas accès à la fiche. Donc un jour, moi et un de mes amis nous sommes proposés pour créer un petit programme qui pourrait interroger les élèves sur le vocabulaire en entier ! Seulement, nous nous sommes rendu compte qu'il faudrait faire communiquer les exécutables entre eux, ou les relier à un même fichier qui contient le vocabulaire. En effet, le programme contient deux interfaces : l'interface élève pour s'interroger sur le vocabulaire et l'interface enseignant pour ajouter des mots ou en supprimer. Cette dernière interface est protégée par un mot de passe que le prof peut changer (il sera donc stocké dans un fichier auquel tout le monde aura accès mais en binaire : ainsi, en ouvrant le fichier texte, les élèves ne comprendront pas). Le seul souci, c'est pour les mots de vocabulaire : je me vois mal donner une nouvelle version a chacun à chaque fois qu'une nouvelle fiche est distribuée : on préférait que cela se passe ainsi : le prof rajoute des mots de vocabulaire qui sont enregistrés dans un fichier texte sur un espace de stockage commun à tous les élèves et au prof. Ainsi, lorsque les élèves lancent le questionnaire, le programme va chercher les mots dans le fichier texte et les nouveaux mots ajoutés par le prof sont quand même demandes aux élèves ! Mais je ne sais pas comment faire pour créer cet espace de stockage commun (quelle plateforme...) en évitant au max d'avoir à créer un compte pour tous les élèves et le prof et comment faire en sorte que ce soit LE fichier sur l'espace de stockage en ligne qui soit choisi par le programme. Faut-il faire en sorte que dès qu'il y a un changement détecté sur l'espace de stockage, le fichier s'enregistre sur l'ordinateur sous une nouvelle version et écrase l'ancienne. Si oui, la non plus je ne sais pas comment m'y prendre. Encore désolé de ne pas avoir pu donner plus d'informations rapidement.
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
26 févr. 2022 à 10:43
Je suppose que les élèves utilisent leur propre ordi de n'importe où pour faire cela à travers Internet, que cela ne se fait pas via des ordis et un réseau de l'école?

Je pense à ces deux possibilités:
1) enregistrer le fichier texte sur un site web, et, quand il démarre le programme va le chercher et le copie sur l'ordi. cela pourrait être un site web de l'un d'entre vous (cela fait parfois partie des abonnements internet, ou est disponible gratuitement), soit un service d'hebergement de fichier.
Cela risque de rendre ton programme python plus complexe, et il risque de na pas fonctionner correctement sur les ordis de tous.

2) Utiliser un service tel que Google Drive ou One Drive, qui va synchroniser un fichier sur les différents ordis.
-1
La deuxième solution me parait la meilleure. Maintenant il me reste toujours une interrogation : comment faire en sorte de synchroniser les fichiers. Et ce qu'il doit simplement être sur Google drive ? Ou alors il faut qu'il se mette ajout automatiquement sur l'ordinateur ?
0
Ah et en effet les élèves n'utilisent donc pas forcément un ordinateur du collège
0
petite question, j'ai fait ce bout de programme, mais je ne comprends pas pourquoi il ne fonctionne pas...
Pouvez-vous éclairer ma lanterne ?
os.system("cls")
print("\t\t\tEspace enseignant :\n")
print("Vous allez changer votre mot de passe.")
sleep(2)
os.system("cls")
print("\t\t\tEspace enseignant :\n")
change_mot_de_passe1 = str(input("Saisissez votre nouveau mot de passe :\n"))
os.system("cls")
print("\t\t\tEspace enseignant :\n")
change_mot_de_passe2 = str(input("Confirmez votre nouveau mot de passe :\n"))
if change_mot_de_passe1 == change_mot_de_passe2 :
print(change_mot_de_passe1)
mdp=str(change_mot_de_passe1)
f=open("age.dat",'w')
f.write(str(mdp))
f.close
os.system("cls")
print("Votre mot de passe a bien été changé.")
sleep(2)
else :
os.system("cls")
print("\t\t\tEspace enseignant :\n")
print("Aïe... Les deux mots de passe sont différents.")
sleep(2)
os.system("cls")
choix_enseignant1 = True
os.system("cls")

Lorsque la modif a lieu, je retrouve mon fichier age.dat vierge... J'ai sans doute manqué une étape
Merci d'avance !
????
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
26 févr. 2022 à 19:14
peux-tu utiliser les balises de code quand tu partages du code:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Attention aussi à ne pas mélanger plusieurs sujets dans une discussion: parfois préférable de créer une nouvelle discussion.
0
yg_be Messages postés 23391 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 1 556
26 févr. 2022 à 19:30
c'est
f.close()
, pas
f.close
.
1
Je ne parviens malheureusement pas à mettre les alinéas...
0
Oui mais je l'ai posté ici car c'était en lien avec l'ouverture et le stockage du fichier...
0