IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lecture dans un fichier


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut Lecture dans un fichier
    Bonjour,

    Je découvre l'écriture/lecture dans les fichiers avec python.
    J'essaie de créer un programme où l'on peut créer un compte et se connecter avec.
    Je souhaiterais donc que l'on puisse écrire dans un fichier (identifiant et mot de passe) grâce à une zone de saisie.
    Qu'avec une autre zone de saisie, l'on s'identifie (identifiant et mot de passe), lors de cette identification, le programme vérifie si les données correspondent (identifiant/mdp),
    en lisant dans le fichier.
    J'ai déjà réussie à programmer l'écriture, cependant pour la lecture je ne vois pas du tout comment faire, pour que le programme vérifie chaque ligne du fichier et lorsque une ligne correspond à ce q'il y a d'écrit dans la zone de saisie,
    on peut se connecter ^^


    J’espère que vous pourrais m'aider rapidement
    Il faut cliquer sur le bouton "Nouvel Utilisateur", remplir les deux zones de saisie, appuyer sur le bouton "Créer le compte", et ça va écrire dans le fichier ^^

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    from tkinter import *
    from tkinter.messagebox import *
     
    #Création Fonction Nouvel Utilisateur
    def NouveauCompte():
        NEWWindow = Toplevel()
        NEWWindow.title("Création d'un nouveau compte")
        NEWWindow.geometry('800x600')
     
        #Création Fonction Destroy fenetre nouveau compte
        def DestoyNEW():
            NEWWindow.destroy()
     
        #Création Fonction Liste
        def recup():
            Fichier = open('Fichier Comptes.txt','a')
            Fichier.write("\nLe nom d'utilisateur :\n")
            Fichier.write(str(NomUtilisateurNEW.get())+'\n')
            Fichier.write("Le mot de passe :\n")
            Fichier.write(str(MotdepasseNEW.get())+'\n')
            Fichier.close()
            NEWWindow.destroy()
     
        #Création Label Accueil Nouveau Compte
        Create = Label(NEWWindow, text = "Créer un compte\n Commencer l'apprentissage du code de la route avec Madame Framboise !", bg="#FFC0CB")
        Create.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Label Nom d'utilisateur
        NomUtilisateurNEWlabel = Label(NEWWindow, text = "Nom d'utilisateur", bg="#ADD8E6", relief=RAISED)
        NomUtilisateurNEWlabel.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Champ de saisie Nom Utilisateur
        NomUtilisateurNEW = StringVar()
        ChampNomNEW = Entry(NEWWindow, textvariable = NomUtilisateurNEW, bg ='white', fg='#DB7093')
        ChampNomNEW.focus_set()
        ChampNomNEW.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Label Mot de passe
        NEWMDP = Label(NEWWindow, text = "Mot de passe", bg="#ADD8E6", relief=RAISED)
        NEWMDP.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Champ de saisie MDP
        MotdepasseNEW = StringVar()
        ChampMDPNEW = Entry(NEWWindow, textvariable = MotdepasseNEW, show='*', bg ='white', fg='#DB7093')
        ChampMDPNEW.focus_set()
        ChampMDPNEW.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Bouton Créer le compte
        CreateNEW = Button(NEWWindow, text ='Créer le compte', command=recup)
        CreateNEW.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Bouton Déjà un compte
        Already = Button(NEWWindow, text ='Vous avez déjà un compte ?', command=DestoyNEW)
        Already.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Fonction Vérification MDP et Nom d'utilisateur
    def Verification():
        if Motdepasse.get() == MotdepasseNEW.get() and NomUtilisateur.get() == NomUtilisateurNEW.get():
            # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
            showinfo('Résultat','Mot de passe correct.\nBienvenue !')
            MainWindow.destroy()
            HomeWindow = Tk()
            HomeWindow.title("Accueil")
            HomeWindow.geometry('800x600')
        else:
            # le mot de passe est incorrect : on affiche une boîte de dialogue
            showwarning('Erreur',"Mot de passe ou nom d'utilisateur incorrect.\nVeuillez recommencer !")
            Motdepasse.set('')
            NomUtilisateur.set('')
     
    #Création fenêtre principal
    MainWindow = Tk()
    MainWindow.title("Ecran de connexion")
    MainWindow.geometry('1100x600')
     
    #Création Frame Login
    Login = Frame(MainWindow, bg="#87CEFA", padx=20, pady=20)
    Login.pack(fill="both", expand="yes", side = RIGHT)
     
    #Création Frame Image
    Image = Frame(MainWindow, bg ="#ADD8E6", padx=20, pady=20, width = 820, height = 600)
    Image.pack_propagate(False)
    Image.pack(side = LEFT)
     
    #Création Label Nom Utilisateur
    Nom = Label(Login, text = "Nom d'utilisateur", bg="#ADD8E6", relief=RAISED)
    Nom.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Champ de saisie Nom Utilisateur
    NomUtilisateur= StringVar()
    ChampNom = Entry(Login, textvariable = NomUtilisateur, bg ='white', fg='#4682B4')
    ChampNom.focus_set()
    ChampNom.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Label MDP
    MDP = Label(Login, text = 'Mot de passe ', bg="#ADD8E6", relief=RAISED)
    MDP.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Champ de saisie MDP
    Motdepasse= StringVar()
    ChampMDP = Entry(Login, textvariable = Motdepasse, show='*', bg ='white', fg='#4682B4')
    ChampMDP.focus_set()
    ChampMDP.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Bouton Valider Nom Utilisateur et MDP
    Valider = Button(Login, text ='Valider', command = Verification)
    Valider.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Bouton Nouvel Utilisateur
    NEW = Button(Login, text ='Nouvel Utilisateur', command = NouveauCompte)
    NEW.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Image
    photo=PhotoImage(file="Image Voiture + Framboise Login Screen.png")
    fond=Canvas(Image,width=820,height=600,bg="white")
    fond.create_image(0,0,image=photo, anchor=NW)
    fond.pack(side=TOP)
     
    MainWindow.mainloop()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Vous pourriez peut être écrire une fonction verifier_utilisateur(nom, mdp) (ainsi que des fonctions ajouter_utilisateur, supprimer_utilisateur) qui permettrait de tester çà sans avoir à passer par l'interface graphique.

    Le détail dépend de l'organisation des informations dans le fichier (que vous devez définir)

    Mais pour commencer avec les fichiers, il faut prendre le temps de lire un tuto.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut
    Bonjour,
    J'ai regardé le lien et je me suis renseigné sur les fichiers.
    Tout d'abord merci pour ce lien, et voici le programme que j'ai pu faire :
    Le fichier est ordonné par colonne, la 1ère ligne n'est pas écrite par le programme mais manuellement :
    1ère ligne du fichier => "Nom d'utilisateur,Mot de passe"
    Le programme tourne bien, cependant seule la première ligne (c'est à dire nom et mdp) est prise en compte et les autres non :/
    Je ne vois pas pourquoi pourriez vous m'aider svp ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    from tkinter import *
    from tkinter.messagebox import *
     
    #Création Fonction Nouvel Utilisateur
    def NouveauCompte():
        NEWWindow = Toplevel()
        NEWWindow.title("Création d'un nouveau compte")
        NEWWindow.geometry('800x600')
     
        #Création Fonction Destroy fenetre nouveau compte
        def DestoyNEW():
            NEWWindow.destroy()
     
        #Création Fonction Liste
        def Ecriture():
            F = open('Fichier TEST.txt','a')
            F.write(str(NomUtilisateurNEW.get())+','+str(MotdepasseNEW.get())+'\n')
            F.close()
            NEWWindow.destroy()
     
        #Création Label Accueil Nouveau Compte
        Create = Label(NEWWindow, text = "Créer un compte\n Commencer l'apprentissage du code de la route avec Madame Framboise !", bg="#FFC0CB")
        Create.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Label Nom d'utilisateur
        NomUtilisateurNEWlabel = Label(NEWWindow, text = "Nom d'utilisateur", bg="#ADD8E6", relief=RAISED)
        NomUtilisateurNEWlabel.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Champ de saisie Nom Utilisateur
        NomUtilisateurNEW = StringVar()
        ChampNomNEW = Entry(NEWWindow, textvariable = NomUtilisateurNEW, bg ='white', fg='#DB7093')
        ChampNomNEW.focus_set()
        ChampNomNEW.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Label Mot de passe
        NEWMDP = Label(NEWWindow, text = "Mot de passe", bg="#ADD8E6", relief=RAISED)
        NEWMDP.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Champ de saisie MDP
        MotdepasseNEW = StringVar()
        ChampMDPNEW = Entry(NEWWindow, textvariable = MotdepasseNEW, show='*', bg ='white', fg='#DB7093')
        ChampMDPNEW.focus_set()
        ChampMDPNEW.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Bouton Créer le compte
        CreateNEW = Button(NEWWindow, text ='Créer le compte', command=Ecriture)
        CreateNEW.pack(side = TOP, padx = 5, pady = 5)
     
        #Création Bouton Déjà un compte
        Already = Button(NEWWindow, text ='Vous avez déjà un compte ?', command=DestoyNEW)
        Already.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Fonction Vérification MDP et Nom d'utilisateur
    def Verification_Utilisateur():
        F = open('Fichier TEST.txt','r')
        entete = F.readline().rstrip('\n\r').split(",")
        nomidx = entete.index("Nom d'utilisateur")
        mdpidx = entete.index("Mot de passe")
        for ligne in F:
            donnees = ligne.rstrip('\n\r').split(",")
            if donnees[nomidx]==NomUtilisateur.get() and donnees[mdpidx]==Motdepasse.get():
                # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
                showinfo('Résultat','Mot de passe correct.\nBienvenue !')
                MainWindow.destroy()
                HomeWindow = Tk()
                HomeWindow.title("Accueil")
                HomeWindow.geometry('800x600')
                break
            else:
                # le mot de passe est incorrect : on affiche une boîte de dialogue
                showwarning('Erreur',"Mot de passe ou nom d'utilisateur incorrect.\nVeuillez recommencer !")
                Motdepasse.set('')
                NomUtilisateur.set('')
     
    #Création fenêtre principal
    MainWindow = Tk()
    MainWindow.title("Ecran de connexion")
    MainWindow.geometry('1100x600')
     
    #Création Frame Login
    Login = Frame(MainWindow, bg="#87CEFA", padx=20, pady=20)
    Login.pack(fill="both", expand="yes", side = RIGHT)
     
    #Création Frame Image
    Image = Frame(MainWindow, bg ="#ADD8E6", padx=20, pady=20, width = 820, height = 600)
    Image.pack_propagate(False)
    Image.pack(side = LEFT)
     
    #Création Label Nom Utilisateur
    Nom = Label(Login, text = "Nom d'utilisateur", bg="#ADD8E6", relief=RAISED)
    Nom.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Champ de saisie Nom Utilisateur
    NomUtilisateur= StringVar()
    ChampNom = Entry(Login, textvariable = NomUtilisateur, bg ='white', fg='#4682B4')
    ChampNom.focus_set()
    ChampNom.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Label MDP
    MDP = Label(Login, text = 'Mot de passe ', bg="#ADD8E6", relief=RAISED)
    MDP.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Champ de saisie MDP
    Motdepasse= StringVar()
    ChampMDP = Entry(Login, textvariable = Motdepasse, show='*', bg ='white', fg='#4682B4')
    ChampMDP.focus_set()
    ChampMDP.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Bouton Valider Nom Utilisateur et MDP
    Valider = Button(Login, text ='Valider', command = Verification_Utilisateur)
    Valider.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Bouton Nouvel Utilisateur
    NEW = Button(Login, text ='Nouvel Utilisateur', command = NouveauCompte)
    NEW.pack(side = TOP, padx = 5, pady = 5)
     
    #Création Image
    photo=PhotoImage(file="Image Voiture + Framboise Login Screen.png")
    fond=Canvas(Image,width=820,height=600,bg="white")
    fond.create_image(0,0,image=photo, anchor=NW)
    fond.pack(side=TOP)
     
    MainWindow.mainloop()
    L'écriture dans le fichier se trouve entre les lignes 15 et 19,
    et la lecture se situe entre les lignes 54 et 73.
    Merci d'avance ^^

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Citation Envoyé par axl1999 Voir le message
    Le programme tourne bien, cependant seule la première ligne (c'est à dire nom et mdp) est prise en compte et les autres non :/
    Ben oui, il suffit de lire votre code pour comprendre pourquoi.

    Mais c'est vous qui avez écrit çà donc c'est à vous d'essayer de comprendre "pourquoi" çà ne le fait pas.

    Arrêtez de regarder votre code, pensez à ce qu'il fait et transposez çà à un problème plus "simple" genre une fonction toto(n, liste) qui retourne vrai si n est dans la liste et faux sinon.
    C'est la même structure, on prend le premier élément de la liste s'il est égal à n on sort True sinon on continue avec le suivant jusqu'à la fin de la liste et on retourne False.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. macros word et lecture dans un fichier excel
    Par antrax2013 dans le forum Windows
    Réponses: 2
    Dernier message: 01/10/2005, 19h05
  2. Réponses: 20
    Dernier message: 25/09/2005, 15h07
  3. Lecture dans un fichier
    Par unknown4 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 14/08/2005, 17h56
  4. [Débutant] Lecture dans un fichier texte
    Par babemagus dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/07/2005, 12h17
  5. Réponses: 12
    Dernier message: 14/06/2004, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo