Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ecriture fichier

Sujet résolu
    11 août 2011 à 16:12:54

    Bonjour, je souhaite modifier un fichier automatiquement avec Python (2.7).
    J'ai donc mon code qui ressemble à :
    fichier = open('interface/code.h', 'w')
    ligne = 'const char ' + generation() + ';'
    print ligne
    fichier.write(ligne)
    fichier.close()
    raw_input('Appuyez sur une touche pour quitter')
    

    Seulement ce code remplace l'intégralité de mon fichier par la ligne const char (l'ecriture fonction correctement), comment pourrais je place la ligne que je veux rajouter à la seconde ligne de mon fichier ?


    Merci, necromoine
    • Partager sur Facebook
    • Partager sur Twitter
      11 août 2011 à 19:01:37

      Salut,

      J'ai pas bien saisi ce que tu voulais faire.

      Tu veux écrire la ligne à la seconde ligne avec rien à la première?
      Tu veux remplacer une seconde ligne déjà existante par une ligne voulue?
      Tu veux ajouter une ligne à la fin du fichier?

      Qu'attends-tu de ton fichier à la fin?

      Bonne soirée.
      • Partager sur Facebook
      • Partager sur Twitter
        11 août 2011 à 20:01:11

        Je veux écrire (et ajouter accessoirement) une seconde ligne après la première en gros :
        mon fichier :
        Ligne 1
        ligne 3

        je voudrais faire :
        ligne 1
        ligne 2 --> ligne ajouté par le script
        ligne 3

        Sachant que j'avais pensé à copié au fur et a mesure le contenu du fichier dans un autre et y rajouter les lignes que je souhaite au fur et à mesure, mais je dois pas changer le nom du fichier de base.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          11 août 2011 à 20:07:40

          Tu pourrais stocker chaque ligne dans une liste, insérer ta nouvelle ligne à la deuxième position, et remplacer le fichier par les lignes de la liste :

          lignes = []
          
          # stockage du fichier dans la liste :
          with open("tonfichier", "r") as fichier :
          	for i in fichier :
          		lignes.append(i)
          	
          lignes.insert(1, "AJOUTE !!") # ajout de la seconde ligne
          
          # remplacement du fichier :
          with open("tonfichier", "w") as fichier :
          	for i in lignes :
          		fichier.write(i)
          
          • Partager sur Facebook
          • Partager sur Twitter
            11 août 2011 à 20:20:00

            C'est parfait, merci beaucoup, et comment je pourrais faire pour remplacer une ligne dont je connais le numero ?
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              11 août 2011 à 20:22:54

              Avec n le numéro de la ligne, remplace la ligne 8 du code précédent par :

              ligne.insert(n - 1, "AJOUTE !!")
              


              Edit : @Fayden : Ah, oui, c'est vrai, une petite erreur d'étourderie ! :honte:
              • Partager sur Facebook
              • Partager sur Twitter
                11 août 2011 à 20:27:24

                (C'est n - 1, pas n + 1)

                Edit : Voire même n tout court, s'il veut ajouter la ligne après. S'il veut éditer la ligne n, il doit modifier l'index n-1 dans la liste, par contre.
                • Partager sur Facebook
                • Partager sur Twitter
                  11 août 2011 à 20:33:47

                  Si je veux editer la ligne 3 je dois mettre la ligne deux non ?

                  Edit :
                  Non ca rajoute, et ne remplace pas.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 août 2011 à 20:34:34

                    Oui, donc n - 1, où n est la ligne que tu veux éditer.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 août 2011 à 20:36:40

                      La ligne est ajouté, et non remplacée (meme en éditant la n-1)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 août 2011 à 20:38:46

                        Comme je l'ai précisé deux messages plus haut, tu ne dois pas utiliser la méthode insert, tu dois modifier la liste à l'aide de son index (ta_liste[n-1] = "truc")
                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 août 2011 à 20:50:12

                          Exact, j'avais mal lu ton message, cela fonctionne parfaitement (si j'avais fait attention j'aurais du trouver seul car insert est assez significatif xD)

                          Merci.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            11 août 2011 à 20:51:26

                            filename est le nom du fichier à éditer.
                            n est l'indice de la ligne à remplacer (en sachant que la première ligne est à l'indice 0).
                            string est la chaîne de remplacement.

                            with open(filename, "r+") as file:
                                texts = file.readlines()
                                texts[n] = string + '\n'
                                file.seek(0)
                                file.writelines(texts)
                            


                            À toi d'adapter ça comme tu l'entends.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Ecriture fichier

                            × 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