Recuperer x et y pour j fichiers

ekip667 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention   1
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > ekip667 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   1
 
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