Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fichier Avancé et Python

    7 août 2010 à 22:22:19

    Salut a tous, je post ici car j'ai un gros problème en python.
    En fait, je lis un fichier que j'ai créé, qui est semblable a celui-ci (ce n'est pas du python, c'est un code inventé ) :

    variable A num;
    
    A : 10


    Explication:

    je créai un variable nommé A, de type numérique ( un chiffre ou un nombre positif ),puis j'assigne une valeur a A, le problème est que ça c'est bien beau, mais comment faire pour que en python je lise le fichier ( ça je sais le faire ), et a la lecture de "variable", j'enregistre le ou la chaine de caractères qui suis "variable" , et celle qui suis "A", puis je créai en python un variable A de valeur nul et de type numérique,et la ligne suivante, je luis assigne une valeur de 10 :euh: .

    Enfin c'est ce que je voudrai faire, mais je ne sais pas comment faire pour que une fois que mon script ai lu "variable", il créai la variable ( dans python ) avec les caractéristique suivant o_O

    de base, je partirai d'un code comme celui ci :
    filin = open("test.txt", "r")
    
    ch = [""]
    global ch    
        ch = filin.read()
        
        for j in range(len(ch)):        
            for i in range(len(ch[j])):
                if ch[j][i]=="variable ":
                    #faire tout ce que j'ai dis ...
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      7 août 2010 à 22:44:26

      Sérieusement, tu as vraiment un gros problème avec la langue française, je n'ai strictement rien compris. (Pire que si je lisais du C :p )

      Tu devrais présenter :

      • ton fichier texte
      • ta sortie souhaitée, ce qu'on doit avoir au final (en mode console)
      • ton code


      • Partager sur Facebook
      • Partager sur Twitter
        7 août 2010 à 23:01:27

        OK, je recommence ^^

        Alors j'ai un fichier texte comme comme ca :

        variable A num;
        A : 10
        A


        Ce que je cherche a faire, est de créer un script python qui lirais et interprèterais mon fichier:
        Alors mon script lirais le fichier, si il lis le mot "variable", il créai une variable avec les caractéristiques qui suivent, ici les caractéristique sont :

        variable A num;

        ou A est le nom de la variable a créer et num le type de la variable, ici numérique.

        A la ligne suivante, j'assigne a la variable A une valeur de 10, mon script lis cette ligne et assigne donc a A une valeur de 10, puis a la 3ème ligne, j'affiche A.

        Je voudrais donc savoir comment en python, interpréter ce fichier pour ( dans cette exemple ) créer une variable nommé A de Type numérique ( dans laquelle on ne peut mettre que des chiffres et des nombre positif), puis luis assigne une valeur, et enfin l'afficher.

        Au final je devrais obtenir ça :

        10
        • Partager sur Facebook
        • Partager sur Twitter
          8 août 2010 à 3:32:27

          Donc tu veux créer un parseur/interpréteur pour un langage ; tu peux chercher de ce côté. A moins que le langage en question soit très simple, bon courage. :)
          • Partager sur Facebook
          • Partager sur Twitter
            8 août 2010 à 5:49:23

            Ce n'est pas la partie "fichier" qui est compliquée dans ce que tu veux faire; en pratique, la seule opération que tu as à faire c'est de lire le fichier ligne par ligne.

            Après, c'est le traitement qui risque d'être compliqué, comme l'a fait remarquer ordiclic..
            • Partager sur Facebook
            • Partager sur Twitter
              8 août 2010 à 9:45:26

              Voila, ce que je voudrais faire c'est traiter le fichier , en gros faire un langage de programmation, mais simplisme, juste définir des variable , et faire de bêtes opérations.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                8 août 2010 à 10:35:25

                Citation

                Voila, ce que je voudrais faire c'est traiter le fichier , en gros faire un langage de programmation, mais simplisme, juste définir des variable , et faire de bêtes opérations



                Oui, mais c'est toujours aussi vague.

                Ton fichier texte ne montre rien o_O

                Il faudrait préciser exactement toutes les possibilités existantes dans ton fichier texte.

                Qui puis-est c'est dans le cas ( comme le dit Ordiclic ), quelquechose qui peut devenir très complexe, c'est pourquoi tu dois être très précis.

                • Partager sur Facebook
                • Partager sur Twitter
                  8 août 2010 à 11:28:50

                  En gros, voilà ce qui se passe:

                  Si tu ne fais que des affectations d'entiers, ou de float, avec une syntaxe simple, du genre:

                  A = 3.14 ou A <- 3.14

                  Alors ça va encore, tu peux t'en sortir avec des trucs du genre:

                  (fichier myfile.txt)
                  A<-4
                  B<-7


                  (fichier test.py)
                  # -*-coding:Latin-1 -*                                                                                                                                                               
                  myfile = open('myfile.txt')                                                                                                                                                          
                  parsed_vars = {}                                                                                                                                                                     
                                                                                                                                                                                                       
                  # On parse le fichier                                                                                                                                                                
                  for line in myfile:                                                                                                                                                                  
                      variable_name,value = line.split('<-')                                                                                                                                           
                      vars()[variable_name] = int(value) # On transforme une chaine de charactère en nom de variable                                                                                   
                      parsed_vars[variable_name] =  vars()[variable_name]                                                                                                                              
                                                                                                                                                                                                       
                  # On peut accèder aux variable obtenues, meme en dehors de la boucle precedentes                                                                                                     
                  for variable_name in parsed_vars:                                                                                                                                                    
                      print variable_name + ' = ' + str(parsed_vars[variable_name])                                                                                                                    
                                                                                                                                                                                                       
                  # On peut même sommer les variables obtenues                                                                                                                                         
                  print "Somme = " + str(sum(parsed_vars.values()))
                  


                  Tu devrais voir s'afficher (ça marche chez moi):
                  A = 3                                                                                                                                                                                
                  B = 4                                                                                                                                                                                
                  Somme = 7


                  Ceci dit, il faut voir que le code que j'ai écrit est le strict minimum. Il ne marche plus si l'utilisateur met des espaces avant ou après les flèches (utiliser strip()), ni si l'utilisateur entre des chaines de caractère à la place d'entiers, ni si l'utilisateur met des commentaires dans son fichier.

                  Tu vois donc que pour faire un truc tout simple, il faut prendre un maximum de précautions. Imagine toi donc ce que ce serait si tu voulais définir des fonctions, des boucles, etc...
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    8 août 2010 à 11:33:16

                    Citation : bossodo

                    Voila, ce que je voudrais faire c'est traiter le fichier , en gros faire un langage de programmation, mais simplisme, juste définir des variable , et faire de bêtes opérations.



                    L'analyse et l'interprétation de programmes forment, en programmation, un sujet extrêmement riche et complexe. Mais heureusement, sur des langages simples il n'est pas difficile d'avoir des résultats encourageants.

                    Dans ton cas, ça ne devrait pas être très difficile. Il faut que, avec un papier et un crayon, tu sépares les grandes idées de ce que fera ton programme. Lire un fichier source, c'est une première idée : tu vas lire le contenu du fichier, récupérer une chaîne de caractères qui représentera le texte du programme à interpréter.

                    On peut donc par la suite réfléchir directement sur ce texte. Il représente un programme, constitué de différentes instructions. Comment les repérer ? A priori (mais ça dépend de ton langage), elles sont séparées par des retour à la ligne. Il faut donc que tu découpes ce texte en une liste d'instructions.

                    On avance : on est passé d'un fichier source à une liste d'instructions, qu'il va falloir exécuter une par une (à l'aide d'une boucle, pourquoi pas). Chaque instruction est une chaîne de caractères, comme "variable A num;" ou "A : 10". Encore une fois, ça dépend de toi, mais on dirait que ton langage ne comporte que deux formes d'instructions : les déclarations et les affectations. Qu'est-ce qui différencie les deux, selon toi ? Comment repérer cette différence ?

                    Quand tu arrives à faire la différence entre les deux types d'instructions, il reste encore à les exécuter. Tu veux pouvoir retenir des variables (donc des noms sous forme de chaînes de caractères) et leur associer des valeurs, qui éventuellement pourront être modifiées. Et ça, ça correspond aux dictionnaires de Python. Il suffit donc de maintenir un dictionnaire qui contient tes différentes variables.

                    C'est ce genre de raisonnement que tu dois mettre en place pour savoir de quoi tu as besoin. Là, on a compté les boucles, les fichiers, les chaînes de caractères, les listes et les dictionnaires : tout ça est dans le tutoriel officiel. Naturellement, plus tu veux pouvoir faire de choses, et plus ton interpréteur devient compliqué (par exemple si tu veux pouvoir écrire "A : B + C * D" il faut savoir analyser des calculs). Tu trouveras différents ateliers sur le forum Autres Langages qui sont consacrés à tout ça.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Fichier Avancé et Python

                    × 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