Forum Programmation.python Erreur pour écriture de fichier csv

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
24
avr.
2020

Bonjour tous le monde,

Je suis débutant en python,pour mon projet je dois extrait des valeurs et les transformer en fichier csv pour utiliser le pandas.Je rencontre un problème pour l’écriture de fichier csv .Le terminal m'indique que, j'ai un array de 0D alors que quand je fais len(b1X(k-1]).Je trouve 2.Pouvez-vous m'indiquer mes erreurs? Ou d'autre solutions.Je vous remercie d'avance.

    import os
    import numpy as np
    import matplotlib.pyplot as plt
    import glob
    import os.path
    import csv



    def tri1(lines):                    # creation de list 
        tab=[]
        for chn in lines:
            tab.append(chn.split('\t'))
        return(tab)

    def change(nl,nc,tab):               # changement en float 
        A = A=np.arange(2,nc-1)   
        for lst in tab[1:nl]:
            for i in A:
                lst[i]=float(lst[i])
        #print(lst)
        return(lst)


    def creation_dossier(chemin1):                            # creation d'un autre répertoire 
        os.mkdir(chemin1)   

    def enregistrment_fichier(nom_de_fichier,matrice):
        np.savetxt(nom_de_fichier,matrice,delimiter =" ")

    def affec(nl,tab):

        b1X=np.zeros(nl-1)                               # intilisation de matrice 
        b1Y=np.zeros(nl-1)
        b1Z=np.zeros(nl-1)
        AA=np.arange(1,nl)
        for k in AA:
             b1X[k-1]=tab[k][2]                          # creation de matrice 
             b1Y[k-1]=tab[k][3]
             b1Y[k-1]=tab[k][4]
             enregistrment_fichier("test_pour_valeur.csv",b1X[k-1])   # appel de la fonction 
             savoir = type(b1X)
             print(savoir)




    def tri(rep):                                           # fonction d'excution des taches 

        os.chdir(rep)
        for file in glob.glob("*.txt"):
             test123 =open(file,"r")
             lignes = test123.readlines()
             tes1 = tri1(lignes)
             modif = change(3,32,tes1)
             trifinale = affec(3,tes1)
             test123.close()

        return(tes1)

    ter = tri("/media/tonny/TOSHIBA EXT/test_pour_stage/premier_test")
    ter1 = creation_fichier("/media/tonny/TOSHIBA EXT/test_pour_stage/premier_test/test_reper_1")
    print("\n")

terminale :

Traceback (most recent call last):
  File "test_forum.py", line 61, in <module>
    ter = tri("/media/tonny/TOSHIBA EXT/test_pour_stage/premier_test")
  File "test_forum.py", line 56, in tri
    trifinale = affec(3,tes1)
  File "test_forum.py", line 41, in affec
    enregistrment_fichier("test_pour_valeur.csv",b1X[k-1])   # appel de la fonction 
  File "test_forum.py", line 29, in enregistrment_fichier
    np.savetxt(nom_de_fichier,matrice,delimiter =" ")
  File "<__array_function__ internals>", line 6, in savetxt
  File "/home/tonny/.local/lib/python3.6/site-packages/numpy/lib/npyio.py", line 1395, in savetxt
    "Expected 1D or 2D array, got %dD array instead" % X.ndim)
ValueError: Expected 1D or 2D array, got 0D array instead         
  • # Petits conseils

    Posté par  . Évalué à 1. Dernière modification le 25/04/20 à 12:39.

    Salut,

    Quelques conseils…

    D'abord tu as un Aide mémoire sur la syntaxe Markdown qui est situé juste en dessous de la zone d'édition, ce qui pourrait te permettre de poster avec un peu plus de style :)

    Ok, l'exemple est avec ruby, mais si on change ruby en python, ça rend pas trop mal :

    import os
    import numpy as np
    import matplotlib.pyplot as plt
    import glob

    J'ai pas tout re-posté, c'était juste pour l'exemple avec coloration syntaxique et peut-être que quelqu'un de l'équipe de modération fera juste les petites modifs pour rendre les choses plus lisibles qu'un pavé.

    Ensuite, y'a quelques petites fautes de français. C'est perturbant. Pas grave, mais perturbant. D'habitude (ce n'est que ma façon de faire et je ne souhaite pas l'imposer), tout mon code est en anglais, sauf les données.

    Enfin, tu appelle la fonction creation_fichier qui n'existe pas dans le code montré (et sans les données que tu veux enregistrer en paramètre). Donc là… ça peut être problématique.

    Ça peut être l'usage d'un IDE qui garde en mémoire cette fonction et donc tu ne vois pas que tu fais le mauvais appel. Solution simple et bourin : quitter et relancer l'IDE.

    Matricule 23415

  • # helpe

    Posté par  . Évalué à 1.

    Poste un extrait du fichier sur lequel tu travaille (premier_test ?)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.