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 au format .csv


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Par défaut Exporter au format .csv
    Bonjour, mon problème est un peu long à exposer mais la solution est sans doute simple. Merci à ceux qui auront la patience...
    Je cherche à utiliser une fonction Python permettant à partir d'une matrice contenant des données, de créer le fichier au format csv contenant ces mêmes données. Je n'ai pas besoin que cela gère tout types d'erreurs, loin de là...
    J'essaie en utilisant un programme écrit par un tiers, simple mais a priori correct. Voici ce programme :

    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
     
    def exporterM2csv0(M, nom):
         p, q  = M.shape
         res   =  1        
         try:
            f = open(nom, 'w')
            for i in  range(0,p):
               for j in range(0,q-1):
                   f.write( str(M[i, j]) + ', ')
               f.write( str(M[i,q-1] ) + '  \n ')
            f.close() 
         except IOError:
              print("Erreur d'écriture, ouvert par ailleurs? ")
              res  = 0
         finally:
              return res
    Je crée ensuite une matrice très simple pour tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import numpy  as np     
    a,b=10,2
    A=np.zeros((a,b))
    for i in range(a):
        A[i,0]=i/a
        A[i,1]=np.sin(i)
    puis je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exporterM2csv0(A,valeurs)
    et Python me retourne l'erreur
    NameError: name 'valeurs' is not defined

    Bien sûr, il faut que 'valeurs' soit défini, j'ai donc pris soin de créer un fichier .txt, de nom "valeurs" (vide mais peu importe), qui est dans mon répertoire de travail.
    Mais ce n'est visiblement pas la bonne solution. Je ne sais pas ce que je dois faire, et à vrai dire, je ne comprends pas pourquoi ma fonction devrait comporter cet argument "nom", il suffirait pour moi, qu'elle crée ce fichier.
    J'ajoute que je travaille sous Spyder, avec Python(x,y).
    Quelqu'un peut-il m'aider?
    Merci d'avance!

  2. #2
    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,

    Il faut utiliser le module csv: c'est beaucoup plus simple.

    Regarde la doc du module: il y a des exemples. Pose des questions si elles ne suffisent pas.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 760
    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 760
    Par défaut
    Salut,

    Si vous utilisez numpy, vous pouvez utiliser les fonctions numpy.savetxt et numpy.loadtxt pour écrire et lire des fichiers CSV.
    Pas la peine d'écrire ces fonctions, elles sont déjà là.

    Citation Envoyé par temkine Voir le message
    et Python me retourne l'erreur
    NameError: name 'valeurs' is not defined

    Bien sûr, il faut que 'valeurs' soit défini, j'ai donc pris soin de créer un fichier .txt, de nom "valeurs" (vide mais peu importe), qui est dans mon répertoire de travail.
    valeurs est une variable Python, elle ne sera pas définie tant que vous n'aurez rien mis dedans.
    Pour le programme Python, le fichier "valeurs.txt" est une chaine de caractères qui pourra être utilisée pour ouvrir un fichier.
    Si vous n'écrivez pas valeurs = "valeurs.txt", Python ne prendra pas la liberté de le faire à votre place.

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

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Par défaut
    Merci, ça marche!

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

Discussions similaires

  1. [1.x] Exporter en format CSV
    Par azou_gold dans le forum Symfony
    Réponses: 8
    Dernier message: 11/04/2015, 10h54
  2. [PR-2003] Exportation au format CSV
    Par Lycanthe dans le forum Project
    Réponses: 2
    Dernier message: 03/11/2011, 10h31
  3. Réponses: 5
    Dernier message: 05/05/2010, 13h48
  4. Query/400 et export en format CSV
    Par DrineNinou dans le forum AS/400
    Réponses: 3
    Dernier message: 26/05/2008, 22h46
  5. Export au format CSV limité à 255 caractères
    Par RKU01 dans le forum Access
    Réponses: 1
    Dernier message: 07/12/2006, 04h53

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