IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Ajouter des lignes à un fichier csv


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 5
    Par défaut Ajouter des lignes à un fichier csv
    Salut,

    voilà je souhaite ajouter des lignes à un fichier csv.

    Je me doute bien qu'il faut jouer sur le mode d'ouverture.
    J'ai essayé plusieurs chose (notamment le "a") en vain.
    A chaque fois, il m'écrase les données précédentes.

    Qu'est-ce qu'il cloche ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    fichier_dest= str(("%s.csv" % liste_recherche[ii]))
                        with open (fichier_dest, "a") as fdest: # on écrit dans le fichier.csv
                            writer = csv.writer(fdest)
                            writer.writerow( (var1, var2, var3) )
                            print 'Recherche '+liste_recherche[ii]+' terminée'
                            fdest.close()
                        ii += 1

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Normalement ouvrir avec "a" devrait fonctionner (et çà fonctionne chez moi).

    Quand vous avez ce genre de soucis, c'est pas si compliqué d'écrire un bout de code qui permette de vérifier (reproduire) qu'une hypothèse est vraie ou pas. Si elle est fausse, çà vous permet de chercher ailleurs... Et si elle est vraie, çà permet de poster un code qui permette (aux autres) de constater le problème (et voir ce qui peut clocher).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 5
    Par défaut
    Bonsoir,

    merci de votre réponse.
    Oui je pensais qu'avec le "a", ca fonctionnerait.
    Mais non.
    Ma variable liste_recherche contient des mots-clés. En changeant les mots clés, même résultat.

    Par contre, je ne saisis pas le sens de la 2ème partie de votre réponse.

    Au cas où, une partie du code plus développé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    liste_recherche =["motcle1","motcle2"]
    i = 0
    while (ii < 2):
              br2 = mechanize.Browser()
              br2.set_cookiejar(cj)
              br2.open("url")
              br2.select_form(nr=0)
              br2.form['sq'] = liste_recherche[ii]
              res2 = br2.submit()
              html2 = res2.read() 
              soup = BeautifulSoup(html2, 'lxml')
              table1 = soup.findAll("table",{ "width" : "100%" })[13] 
              tr1 = table1.findAll('tr')[3] 
              resultat = tr1.string
              fichier_dest= str(("%s.csv" % liste_recherche[ii]))
                        with open (fichier_dest, "a") as fdest: # on écrit dans le fichier.csv
                            writer = csv.writer(fdest)
                            writer.writerow( (var1, var2, resultat) )
                            print 'Recherche '+liste_recherche[i]+' terminée'
                            fdest.close()
                            ii += 1

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par AjdsAop14 Voir le message
    Par contre, je ne saisis pas le sens de la 2ème partie de votre réponse.
    Ca dit seulement que le problème n'est sans doute pas là où vous regardez (et dans le code que vous montrez) sauf à le reproduire en quelques lignes.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import csv
     
    datas = ('aa', 'bb', 'cc')
     
    with open('test.csv', 'a') as f:
        writer = csv.writer(f)
        for ix, zz in enumerate(datas):
            writer.writerow([ix, zz])
     
    with open('test.csv') as f:
        print (f.read())
    C'est pas compliqué de l'exécuter 2 fois pour voir ce que çà affiche et conclure que si la 'a' fonctionne votre soucis est ailleurs.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 5
    Par défaut
    Bonjour,

    je viens de comprendre.
    Le soucis vient d'ailleurs.... J'aurais dû m'en douter.
    Il vient dès que j'introduis un while plus haut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    with open(fichier_source_csv+".csv", "r")  as csvfile:
            readCSV = csv.reader(csvfile, delimiter=':')
            pws = []
            mails = []
     
            i = 0
            while (i<2): # c'est l'introduction de ce while qui me provoque le problème
                for row in readCSV:
                    var1 = row[0]
                    var2 = row[1]
     
                    vars1.append(var1)
                    vars2.append(var2)
                    var1_site = vars1[i]
                    var2_site = vars2[i]
     
                    # Portion de code #
     
                    liste_recherche =["motcle1","motcle2"]
                    i = 0
                    while (ii < 2):
                        br2 = mechanize.Browser()
                        br2.set_cookiejar(cj)
                        br2.open("url")
                        br2.select_form(nr=0)
                        br2.form['sq'] = liste_recherche[i]
                        res2 = br2.submit()
                        html2 = res2.read() 
                        soup = BeautifulSoup(html2, 'lxml')
                        table1 = soup.findAll("table",{ "width" : "100%" })[13] 
                        tr1 = table1.findAll('tr')[3] 
                        resultat = tr1.string
                        fichier_dest= str(("%s.csv" % liste_recherche[ii]))
                                with open (fichier_dest, "a") as fdest: # on écrit dans le fichier.csv
                                    writer = csv.writer(fdest)
                                    writer.writerow( (resultat) )
                                    print 'Recherche '+liste_recherche[i]+' terminée'
                                    fdest.close()
                                    ii += 1
                i += 1

Discussions similaires

  1. ajouter des lignes à un fichier csv en R
    Par BPython dans le forum R
    Réponses: 2
    Dernier message: 27/10/2016, 12h57
  2. Ajouter des lignes aux fichiers sources créés
    Par shaiHulud dans le forum Eclipse
    Réponses: 2
    Dernier message: 06/10/2011, 21h40
  3. Ajouter des lignes dans un fichier *.log
    Par Fred2209 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/12/2006, 15h15
  4. [Fichier] Ajouter des lignes...
    Par Life Hunter dans le forum Langage
    Réponses: 4
    Dernier message: 26/11/2005, 18h28
  5. [Fichier] Ajout des lignes de doc dans arraylist
    Par 3adoula dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 29/04/2004, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo