Recuperer x et y pour j fichiers

Fermé
ekip667 Messages postés 8 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 25 mars 2020 - 25 mars 2020 à 14:01
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 25 mars 2020 à 15:46
Bonjour tout le monde,

Je sais comment récuperer les valeurs x et y d'un fichier csv/dat/txt par exemple comme ceci :


def lire(file,n = 0,enc = 'utf-8'):
    x,y = [],[]
    with open(file,'r',encoding = enc) as file:
        i = 0
        for k in file:
            if i >= n:
                ligne = k.split(" ")
                y.append(float(ligne[2]))
                x.append(float(ligne[1]))
            i = i+1
    return y,x
y,x=lire("Fichier_0.dat",enc="latin-1")


Mais depuis un moment j'essaie de récuperer les valeurs x_j et y_j des fichier "Fichier_j.dat" pour cela je passe par des dictionnaires car comme cela si j'ai deux fichiers : Fichier_0.dat et Fichier_1.dat j'aurais : x[0] = [les valeurs de x du fichier_0.dat]
y[0] = [les valeurs de y du fichier_0.dat]
x[1] = [les valeurs de x du fichier_1.dat]
y[1] = [les valeurs de y du fichier_1.dat]

J'ai donc écris ceci mais cela me donne les valeurss de x et y du fichier 0 et cela me dit j = 97 (j'ai 100 valeurs dans mon fichier) :


nbre = 2
def lire(file,n = 0,enc = 'utf-8'):
    x,y = {},{}
    for j in range(0,nbre):
        with open("Fichier_" +str(j)+ ".dat",'r',encoding = enc) as file:
            i = 0
            for k in file:
                if i >= n:
                    ligne = k.split(" ")
                    x[j] = float(ligne[0])
                    y[j] = float(ligne[1])
                    i = i+1


Merci de votre aide, je bloque réelement sur ce point



Configuration: Linux / Chrome 80.0.3987.132

3 réponses

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
25 mars 2020 à 14:54
bonjour, tu ne nous montres n'y comment tu appelles la fonction, ni comment tu exploites les résultats.
0
ekip667 Messages postés 8 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 25 mars 2020 1
Modifié le 25 mars 2020 à 15:06
oui en effet pardon j'ai fait n'importe quoi. Je viens de réecrire quelque chose mais j'ai ici le probleme que mes valeurs ne s'ajoute pas à mon dico je sais que pour une liste c'est .append mais ici je ne sais pas . Du coup j'obtiens x[0] = [derniere valeur de x de Fichier_0]
x[1] = [derniere valeur de x de Fichier_1]
y[0] = [derniere valeur de y de Fichier_0]
y[1] = [derniere valeur de y de Fichier_1]



nbre = 2

x,y = {},{}
n=0
for j in range(0,nbre):
    with open("Fichier_" +str(j)+ ".dat",'r',encoding = "latin-1") as file:
        i = 0
        for k in file:
            if i >= n:
                ligne = k.split(" ")
                x[j] = float(ligne[1])
                y[j] = float(ligne[2])
                i = i+1



Merci encore
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
25 mars 2020 à 15:34
je ne comprends pas pourquoi tu ne continues pas la même technique avec append.
exemple:
nbre = 2
x,y = [[]],[[]]
n=0
for j in range(0,nbre):
        x.append
        y.append
        print("=== ",x,y,"===")
        i = 0
        for k in range(0,nbre+3):
            if i >= n:
                print(x,j,y)
                x[-1].append( "x "+str(j)+" "+str(k))
                y[-1].append( "y "+str(j)+" "+str(k))
                i = i+1
print(x,y)
0
ekip667 Messages postés 8 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 25 mars 2020 1 > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
25 mars 2020 à 15:39
Je suis désolé mais je ne comprends pas ton code et comment il pourrait s'accomoder avec ce que je fait. Peux-tu m'expliquer s'il te plaît ?

Merci
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > ekip667 Messages postés 8 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 25 mars 2020
25 mars 2020 à 15:46
prends un peu plus de temps pour l'exécuter, l'analyser, le comprendre.
et ensuite le comparer à ton code, et voir ce que tu pourrais réutiliser.
0
ekip667 Messages postés 8 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 25 mars 2020 1
25 mars 2020 à 15:32
Je viens d'ecrire ça donc je recupere dans une liste et je transfére dans un dictionnaire mais le probléme c'est que ma liste contient les x et y des deux fichiers (pour j=0 et j=1) donc mon dictionnaire est deux fois plus grand avec des doublons dans les valeurs .



nbre = 2

x,y = {},{}
xx = []
yy = []
n=0
for j in range(0,nbre):
    with open("Fichier_" +str(j)+ ".dat",'r',encoding = "latin-1") as file:
        i = 0
        for k in file:
            if i >= n:
                ligne = k.split(" ")
                xx.append(float(ligne[1]))
                yy.append(float(ligne[2]))
                x[j] = xx
                y[j] = yy
                i = i+1

0