Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] utilisation de fichiers

Sujet résolu
    31 mars 2007 à 9:53:13

    Bonjour :)


    Voilà, j'essais d'utiliser des fichiers afin d'y stocker des mots, que j'essais ensuite de récuperer dans une liste ou un dictionnaire... Seulement je n'arrive pas à récuperer les mots car à chaques fois, soit je fais une boucle infinie, soit i y a une erreur dans la longueur de mes chaînes :(
    Voici mon code :
    document = open("fichier", "r")
    adieu = {}
    i = 0
    while 1:
        ligne = document.readline()
        if ligne[0] == "&":
            break
             
        if ligne[0] == "@" and ligne[1] == "2":
            while ligne[0] != "§":
                adieu[i] = ligne
                i += 1
        print ligne
    document.close()

    Mon document se termine par &
    les lignes que je veux récuperer se trouvent entre @2 et §
    j'utilise la fonction print afin de voir ce qui se passe...
    Quelqu'un aurait une idée pour m'aider ? Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      31 mars 2007 à 11:06:26

      Je dirais que c'est le caractère § qui pose problème.
      • Partager sur Facebook
      • Partager sur Twitter
        31 mars 2007 à 11:15:39

        C'ets cette partie la qui pose problème :

        while ligne[0] != "§":
        adieu[i] = ligne
        i += 1
        car si ligne[0] ets different de §, tu auras une boucle infinie. ligne[0] ne variant jamais dans ta boucle.

        Olivier
        • Partager sur Facebook
        • Partager sur Twitter
          31 mars 2007 à 11:26:55

          Bigloo -> Le caractère, tu veux dire qu'il ne comprend pas ce caractère :euh: ?
          Olivier -> Normalement, ça ne devrait pas poser de problèmes car mon fichier se présente comme cela :

          Citation : fichier

          @1
          hello
          bonjour
          salut
          §
          @2
          au revoir
          A bientôt.
          Salut !
          §
          @3
          Je
          tu
          il
          elle
          §
          @4
          manger
          chanter
          §
          @5
          vite
          lentement
          §
          @6
          s

          §
          &


          Ce que je veux récupperer, c'est les "bonjour", les "au revoir", etc...
          • Partager sur Facebook
          • Partager sur Twitter
            31 mars 2007 à 12:22:50

            Relis mon topic ...

            Ta boucle infinie est bien là ...

            tu fais un while ligne[0]!= (caractère bizarre). Or dans ton while, ligne[0] ets une constante ... et ne vaudra jamais ce caractère ... donc boucle infinie.
            • Partager sur Facebook
            • Partager sur Twitter
              31 mars 2007 à 14:19:02

              ben si, le caractère bizare § se trouve 6 fois dans mon fichier !
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                31 mars 2007 à 15:39:44

                Oui, mais ligne[0] ça ne change pas, c'est ce qu'il veut dire.
                • Partager sur Facebook
                • Partager sur Twitter
                  1 avril 2007 à 10:27:23

                  Ha oui, d'accord, je viens de voir... Mais je n'arrive pas à faire autrement O.o ou alors la solution serait de créer un fichier par liste que je veux créer... Mais cette solution me parait un peu trop lourde... Qu'en pensez vous ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    1 avril 2007 à 11:39:08

                    En fait c'est surtout
                    if ligne[0] == "@" and ligne[1] == "2":
                            while ligne[0] != "§":
                                adieu[i] = ligne
                                i += 1


                    Comme tu ne relis pas la ligne, ça marche pas (tu traites toujours la même). Je te laisse deviner ce que tu dois rajouter.

                    J'ajoute que j'ai eu à modifier les § en un autre caractère pour que ça fonctionne.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 avril 2007 à 12:51:13

                      Oui, c'est ce qu'il m'avait semblé comprendre, je pense qu'il faut que je rajoute un
                      ligne = document.readline()
                      , mais finalement le problème ne s'arrange pas, car comment savoir si je suis bien dans la partie qui m'interresse ? En refaisant une boucle, qui demandera une autre boucle, etc... o_O
                      Tu dis que tu as du changer le caratère § ? cela veut dire que je ne peux pas l'utiliser ? :euh: si j'ai utilisé ses caractères bizares, c'est parce que normalement, on ne s'en sert pas pour faire un mot ( ma liste doit contenir des mots )...
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        1 avril 2007 à 13:26:39

                        Une fois que tu es dans la deuxième boucle, tu es déjà dans une partie qui t'intéresse. Donc tu peux lire en toute tranquilité ce que tu veux non ?

                        Quel est le but de ton programme en fait ? Que doit contenir "adieu" à la fin ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 avril 2007 à 7:36:16

                          Le programme dans l'ensemble est un générateur de phrases aléatoire, je l'ai finit, mais je voulais le rendre plus personnalisable en stockant les mots dans des fichiers qui pourront ensuite être modifiés :)
                          La liste ou le dictionnaire "adieux" contient des adieux : "Au revoir.", "Salut", "A la prochaine.", etc, que le programme va choisir aléatoirement et affichera lorsqu'on le quitte. Pour les autres ( les salutations et les phrases ), se sera la même chose, donc bon :)
                          Ce que je ne comprend pas : dans la deuxième boucle, je me trouve dans l'endroit où je veux, mais si je refais
                          ligne = document.readline()
                          ça reviendra à zéro, non ?
                          o_O
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            2 avril 2007 à 10:35:19

                            Ben non, ça lit une autre ligne ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              2 avril 2007 à 14:58:06

                              Salut,

                              En fait, lorsque tu ouvres un fichier, tu as un "curseur de position" qui indique au programme où tu en es dans la lecture du fichier.
                              Donc lorsque tu enchaînes plusieurs .readline() il te lira ligne par ligne le fichier.

                              Lyrius
                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 avril 2007 à 16:19:54

                                lol Ok, merci de vos réponses, je vais pouvoir m'y remettre :)
                                • Partager sur Facebook
                                • Partager sur Twitter

                                [Python] utilisation de fichiers

                                × 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