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 :

Exporter données au format CSV


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut Exporter données au format CSV
    Bonjour

    J'ai une liste d'éléments de la forme suivante :
    [12.0, 'Nom 1', 'Prénom 1', 1465.0, 0.0, 1389.0, 0.05471562275017994]
    [13.0, 'Nom 2', 'Prénom 2', 1609.0, 64.0, 1620.0, -0.006790123456790087]

    Je souhaite les exporter dans un fichier CSV
    J'ai écrit l'instruction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with open("Essai.csv", mode='wb') as CSVFile :
       Sortie = csv.writer(CSVFile, delimiter=';')
       for Ligne in Liste :
          Sortie.writerow(Ligne)
    Python me renvoie l'erreur TypeError: a bytes-like object is required, not 'str'Est-ce que quelqu'un saurait comment procéder ?

  2. #2
    Membre expérimenté Avatar de zancrows
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 159
    Par défaut
    Bonjour,

    l'erreur est explicite, ce que vous essayé de faire actuellement c'est d'écrire en mode write-byte (mode="wb") alors que certaines données sont au format str et non en bytes.
    Vous avez plusieurs possibilités, la plus simple ici consiste à changer le mode comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    with open("Essai.csv", mode='w') as CSVFile :
    pour les mode d'ouverture d'un fichier avec open : https://docs.python.org/fr/3.6/libra...ions.html#open
    vous pouvez encore utiliser la méthode .decode()des str pour les passer au format bytes au moment de l'écriture.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Un petit coup d’œil à la doc permet de voir qu'avec Python 3, l'ouverture du fichier n'est pas en mode binaire ('w'), alors qu'elle l'était avec Python 2 ('wb'):

    https://docs.python.org/3/library/csv.html#csv.writer

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut
    Merci, ça marche très bien.
    Mais est-ce que vous sauriez pourquoi Python insère une ligne vide entre mes deux lignes ?

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    La doc donne les explications et la méthode pour éviter le ligne en trop.

    Extrait (fin de la page csv):

    Si newline='' n'est pas spécifié, les caractères de fin de ligne embarqués dans des champs délimités par des guillemets ne seront pas interprétés correctement, et sur les plateformes qui utilisent \r\n comme marqueur de fin de ligne, un \r sera ajouté. Vous devriez toujours spécifier sans crainte newline='', puisque le module csv gère lui-même les fins de lignes (universelles).
    Il y a des tas de choses intéressantes dans la doc, et on gagne beaucoup de temps à s'y référer...

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    La doc donne les explications et la méthode pour éviter le ligne en trop.
    Il y a des tas de choses intéressantes dans la doc, et on gagne beaucoup de temps à s'y référer...
    Merci beaucoup
    C'est vrai qu'il y a plein de choses intéressantes dans la doc. Mais comme je suis assez mauvais en anglais, j'ai un peu de mal.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/11/2018, 18h30
  2. [AC-2010] Exportation données vers format TXT ou CSV
    Par juice dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/12/2011, 12h48
  3. Réponses: 2
    Dernier message: 10/12/2011, 18h40
  4. Export de données sous format csv
    Par matriyouchka1971 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/09/2009, 17h48
  5. Exportation de données format csv
    Par dcanl dans le forum Access
    Réponses: 14
    Dernier message: 10/12/2006, 20h59

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