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 :

Récupération de donnée dans fichier txt


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut Récupération de donnée dans fichier txt
    Hello,

    Je suis en train de créer une base de donnée en python qui génère trois fichiers txt.
    Parmi cela il y a un fichier étudiant qui recense :
    ID;Prénom;Nom;Année

    et un fichier cours
    ID_Cours;Nom_cours;Année_cours

    Ainsi, lorsque j'ajoute une note je vérifie que l'étudiant et le cours on une année identique.
    Je voudrais ensuite simplifier l'affichage, c'est à dire que j'aimerais bien que lorsque j'ai sélectionné le cours (I20;Test;2) pour lequel je vais ajouter une note, ensuite j'aimerais afficher que les étudiants qui sont en année 2.

    Actuellement je lis mes fichiers avec readlines, et je print.

    Il faut faire une récupération de variable qui correspond à l'année et ensuite dans ma liste d'étudiant je pensais plutôt faire quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    etudiant_annee = []
    fichier = open('etudiants.txt', 'r')
    content = fichier.readlines
    for line in content :
        L=line.split(';')
        if L[3] == variable du fichier cours:
             etudiant_annee.append(line)
    print(etudiant_annee)
    Mais je n'arrive pas à faire ma récupération de variable.

    Merci pour votre aide
    Back

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    - Pour exécuter une fonction il faut ajouter les parenthèses : content = fichier.readlines() à la place de content = fichier.readlines...

    - Le nom de variable "variable du fichier cours" n'est pas correcte, il ne doit pas y avoir d'espace...


    As-tu un exemple de fichier pour tester ?

  3. #3
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Par défaut
    Hello,

    Actuellement voici tout 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
    def ajouter_une_note (N):
        nouvelle_saisie3 = input("Voulez vous saisir une nouvelle note ? (O/N)")
        fichier = open ('notes.txt', "a")
        ETUDIANT = []
        while nouvelle_saisie3 == "O" or nouvelle_saisie3 =='o':
            print("Vous allez rentrer une nouvelle note à un étudiant",)
            print("Voici l'ensemble des cours pour lesquelles vous pouvez saisir une note")
            fichier2 = open('cours.txt', 'r')
            content = fichier2.read()
            print(content)
            code_cours = input("Veuillez saisir le code du cours : ")
            refus = verif_cours(code_cours)#On vérifie si le cours existe bien
            while refus == 1:
                refus = verif_cours(code_cours)
                if refus == 1:
                    print("Ce cours n'existe pas")
                    code_cours = input("saisir le nouveau numéro de cours : ")
            print("Voici l'ensemble des étudiants pour lesquelles vous pouvez saisir une note")
            fichier2 = open('etudiants.txt', 'r')
            content = fichier2.read()
            """for line in content :
                L = line.split(';')
                if L[3] =="""
            print(content)
            num_etudiant = input("Veuillez saisir le n°étudiant de l'élève à qui vous voulez ajouter une note : ")
            refus = verif_ID(num_etudiant)#On vérifie si l'étudiant existe bien
            while refus ==1 :
                refus = verif_ID(num_etudiant)
                if refus == 1:
                    print("l'ID est inexistant")
                    num_etudiant = input("saisir n°étudiant : ")
            for line in content :
                ETUDIANT.append(line.split(';'))
            ETUDIANT.sort() #Ne semble pas fonctionner
            refus = verif_attribution(code_cours,num_etudiant)
            while refus ==1 :
                refus = verif_attribution(code_cours, num_etudiant)
                if refus == 1:
                    print("L'étudiant n'est pas inscrit à ce cours là")
                    num_etudiant = input("saisir n°étudiant : ")
            input_valide = False #pour vérifier que l'on ne saisi pas du texte ou note invalide
            while not input_valide : #vérification
                note = input("saisir la note du cours : ")
                try :
                    note=float(note)
                except :
                    print("La note saisie n'est pas compatible")
                    continue
                if (note >= 0) and (note <= 20) :
                    input_valide = True
                else :
                    print("La note saisie n'est pas compatible")
            print("La note a bien été enregistrée")
            note=str(note)
            ligne3 = num_etudiant+';'+code_cours+';'+note+ '\n'
            fichier.write(ligne3)
            nouvelle_saisie3 = input("saisir une nouvelle note (O/N) ?")
        fichier.close()
    Ce que j'aimerais c'est qu'à a fin de ma vérification que le code_cours existe dans mon fichier, c'est remonté l'année associé à ce code cours dans une variable pour éviter ensuite de print tous les étudiants, mais de faire une restriction sur les étudiants dont l'année est égale à l'année associé au code cours.

    Est ce plus clair ?

    En soit le fichier marche mais c'est pour optimiser l'affichage

    Merci
    Back

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Ben il faudrait faire les choses par étapes, diviser le problème en plusieurs parties (fonctions) et tester chaque partie avant de les mettre ensemble...

    Par exemple la fonction ajouter_une_note devrait servir à ajouter une note et donc on devrait l’exécuter seulement si on répond oui à la question "Voulez vous saisir une nouvelle note ?", ce serait plus simple et plus clair...

    Juste après (si on répond oui) on a une boucle qui ne se termine jamais :while nouvelle_saisie3 == "O" or nouvelle_saisie3 =='o': ce qui est un problème ...

    On pourrait par exemple reformuler comme ceci :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nouvelle_saisie3 = input("Voulez vous saisir une nouvelle note ? (O/N)")
     
    if nouvelle_saisie3 == "O" or nouvelle_saisie3 =='o':
        ajouter_une_note()
    print("fin")


    - Sinon le paramètre N dans ajouter_une_note (N): n'est pas utilisé...

    En soit le fichier marche mais c'est pour optimiser l'affichage
    En fait si j'ai demandé des exemples de fichiers c'était pour pouvoir tester...

    Bon je vais essayer de comprendre la suite de ton code...

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Tu signales que cette partie ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     content = fichier2.read()
            ...
            for line in content :
                ETUDIANT.append(line.split(';'))
            ETUDIANT.sort() #Ne semble pas fonctionner
    Il y a plusieurs problèmes :

    - la boucle ne lis pas chaque ligne contenu dans le fichier mais plutôt chaque caractère, en effet content n'est pas une liste de lignes mais c'est une string de tout le contenu du fichier...

    Pour avoir une liste de lignes tu peux utiliser content = fichier2.readlines()...

    - Ensuite line.split(';') renvoi une liste et ce n'est pas cette liste que tu veux récupérer mais plutôt le premier élément de cette liste...

    Tu dois donc remplacer l'instruction par ETUDIANT.append(line.split(';')[0]) (ajout de [0])

Discussions similaires

  1. Enregistrer données dans fichier txt
    Par man0n dans le forum Tkinter
    Réponses: 14
    Dernier message: 30/04/2014, 15h31
  2. Récupérer données dans fichier .txt
    Par hugues6358 dans le forum Général Python
    Réponses: 25
    Dernier message: 09/12/2013, 09h08
  3. Extraire des données dans fichier txt
    Par islande dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 28/03/2013, 13h42
  4. [XL-2003] Données dans fichier .txt vers tableau en .xls
    Par Invité1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/08/2009, 19h30
  5. lire données dans fichier txt
    Par flo456 dans le forum Langage
    Réponses: 5
    Dernier message: 14/09/2006, 08h01

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