Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ecrire lignes dans un fichier CSV

    18 mai 2015 à 13:33:55

    Bonjour,

    Je souhaite écrire plusieurs lignes dans un fichier CSV, mon problème c'est que le script n'ajoute que la dernière ligne dans mon fichier (je suis sous python 3.4)

    Voici mon code :


    import os
    import glob 
    import os.path
    from pathlib import Path
    from glob import glob
    from os.path import join
    import csv
     

    PATH = 'C:\\Users\\toto\\Desktop\\AUDIT-TEST2'
     
    def ecrireCSV(liste):
            print(liste)
            file = open('Inventaire_Contabs.csv', 'w')
            csv.writer(file).writerow(liste)          
            file.close()
     

                   
    def lectureFILE_USER(fullPath, nameFILE, rep):
          fichier=open(fullPath, 'r');
          while 1:
                      txt=fichier.readline()
                      if txt =='' :
                       break
                      if txt[0] !='#' and txt[0] !='\n' :
                            liste = []
                            liste.append(rep)
                            liste.append(nameFILE)
                            ligne=txt.split()
                            liste.append(txt)                
                            ecrireCSV(liste)
                           
          fichier.close()                       
       
    def lectureDIR(mypath, rep):
          for path, dirs, files in os.walk(mypath):
                  for f in files:
                    fullpath = os.path.join(path, f)
                    nameFILE = os.path.basename(fullpath)
                    lectureFILE_USER(fullpath, nameFILE, rep)
     
                        
    for rep in os.listdir(PATH):
            chemin = os.path.join(PATH, rep)
            lectureDIR(chemin, rep)
       


    Le résultat de mon script est :
     
    >>>
    ['Cron-PARVA4114539', 'toto', '20,50 * * * * /bin/bsh -c "/usr/lib/uucp/uudemon.poll > /dev/null"\n']
    ['Cron-PARVA4114539', 'toto', '25,55 * * * * /bin/bsh -c "/usr/lib/uucp/uudemon.hour > /dev/null"\n']
    ['Cron-PARVA4114539', 'toto', '45 23 * * * /bin/bsh -c "/usr/lib/uucp/uudemon.cleanu > /dev/null"\n']
    ['Cron-PARVA4114539', 'toto', '48 8,12,16 * * * /bin/bsh -c "/usr/lib/uucp/uudemon.admin > /dev/null"\n']
    ['Cron-PARVA4114539', 'uucp', '20,50 * * * * /bin/bsh -c "/usr/lib/uucp/uudemon.poll > /dev/null"\n']


    Sauf que le CSV produit ne contient que la ligne :
     
    ['Cron-PARVA4114539', 'uucp', '20,50 * * * * /bin/bsh -c "/usr/lib/uucp/uudemon.poll > /dev/null"\n']


    Merci de votre aide
     
    Cdlt

    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2015 à 16:56:35

      Ce n'est pas tant qu'il écrit que la dernière ligne, mais plutôt qu'il écrase à chaque fois ton fichier dès que tu écris une ligne. Utilise l'argument "a" au lieu de "w" dans ta méthode open() quand tu écris.
      • Partager sur Facebook
      • Partager sur Twitter

      Ecrire lignes dans un fichier CSV

      × 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