Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lecture donnée dans un fichier texte (txt)

Sujet résolu
    14 novembre 2019 à 19:56:02

    Bonsoir, je suis débutant sur Python et j'ai un petit problème :

    J'ai réussi à créer à l'aide de quelques aides sur internet, un programme permettant de retrouver une personne dans une "base de donnée" en fichier texte.

    Le programme demande le prénom et le nom. Il marche bien lorsque je rentre une personne existante et ensuite il recommence au début mais quand je rentre une personne inexistante au lieu que le programme dise "personne inconnue", j'ai ce message d'erreur :

    Traceback (most recent call last):
      File "C:/Users/Hugo/PycharmProjects/test_basededonnee_entxt/main.py", line 24, in <module>
        nm = personne[1]
    IndexError: list index out of range

    Voici la forme du fichier txt :

    prenom;nom;phone;email;adresse;codepostal;ville
    jean;durant;0601020304;jeandurant@gmail.com;1 rue du boulevard;75001;PARIS

     Et voici le code bien-sûr :

    import time
    
    #Ouverture fichier txt
    base = open("base.txt").read().split("\n")
    for i in range(len(base)): base[i] = base[i].split(";")
    
    # demande nom prenom
    while True:
            print(""
                  "Recherche de personnes dans la base de donnée :")
            time.sleep(1.5)
            print("Attention ! Merci de ne pas faire des recherches avec : "
                  "- des accents "
                  "- des caractère speciaux"
                  " - PAS DE MAJUSCULES !")
            time.sleep(2.5)
            print("Accès à la base...")
            time.sleep(1)
            prenom = str(input("Prénom : "))
            nom = str(input("Nom de famille: "))
    
            for personne in base:
                prnm = personne[0]
                nm = personne[1]
    
                if prnm == prenom and nm == nom:
                    print("La personne a été trouvée avec succès !")
                    time.sleep(1.5)
                    print("Infos connues sur " + personne[0] + " " + personne[1] + " :")
                    time.sleep(1)
                    print("Téléphone : " + personne[2])
                    time.sleep(1)
                    print("Email : " + personne[3])
                    time.sleep(1)
                    print("Adresse : " + personne[4] + " " + personne[5] + " " + personne[6])
                    break
    
            else:
                print("Aucun résultat n'a été trouvé dans la base !")
                time.sleep(1)
                print("Veuillez réessayer...\n\n")
                continue

    Je ne sais pas si c'est assez compréhensible mais c'est la seule chose qui pose problème : j'ai fait le même programme avec un login et mot de passe dans un fichier txt mais ça bloque quand ce qui est rentré n'existe pas dans le fichier texte.

    Merci d'avance :)

    Hugo




    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2019 à 22:32:48

      Ta façon d'extraire le fichier n'a pas de sens.

      Regarde plutôt avec la librairie csv

      • Partager sur Facebook
      • Partager sur Twitter
        15 novembre 2019 à 15:37:19

        thelinekioubeur 


        Ça fonctionne très bien et en effet c'est pas trop logique de faire tout ça dans un fichier txt.

        Merci beaucoup pour votre aide !

        • Partager sur Facebook
        • Partager sur Twitter

        Lecture donnée dans un fichier texte (txt)

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown