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 :

Ecrire une liste de liste dans un fichier texte


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Ecrire une liste de liste dans un fichier texte
    Bonjour,

    J'essaye tant bien que mal d'écrire des (liste de ) listes de données dans un fichier texte. Le but de mon programme est de faire divers calculs puis d'en donner les résultats dans un fichier texte.
    Avant d'expliquer mon problème voici le code en question :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #Export data
    chdir('../')
    Fichier = open(NomFichier, 'w')
    Fichier.write('lambda \t')
     
    i = 0
    while i < 15 :
        if len(AbsReflectance[i]) == len(lamb[0]):
            Fichier.write(str(i+1))
            Fichier.write('\t')
            i += 1
        else :
            i += 1
    Fichier.write('\n')
     
    i = 0
    for lambd, ABSR in zip(lamb[0], AbsReflectance[i]) :
        lambd = str(lambd)
        Fichier.write(lambd)
        Fichier.write('\t')
     
        i = 0
        while i < 15 :
            if len(AbsReflectance[i]) == len(lamb[0]):
                ABSR = str(ABSR)
                Fichier.write(ABSR)
                Fichier.write('\t')
                i += 1
            else :
                i += 1
        Fichier.write('\n')
    La première partie consiste à écrire le 'titre' de chacune de mes colones. Ensuite la longueur d'onde et les valeurs associés sont censé s'écrire en colones. Exemple :

    lambda 1 2 3 4 ...

    100 1.2 5.2 6.3 50 ...

    200 5.2 4.1 5.3 8 ...

    ... ... ... ... ... ... ...

    Voila. Donc j'y arrive ! le soucis c'est que les valeurs sont toute les mêmes. A croire que ABSR ne change pas de valeur durant la boucle.. Et je ne sais pas pourquoi .. Ma liste AbsReflectance est en fait une liste de liste, je souhaiterais afficher dans un fichier texte chaque valeur de chaque liste de ma liste de liste correspondant a un lambda donné.

    J’espère être claire.. :/

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut

    Relisez votre code:
    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
    i = 0
    for lambd, ABSR in zip(lamb[0], AbsReflectance[i]) :
        lambd = str(lambd)
        Fichier.write(lambd)
        Fichier.write('\t')
     
        i = 0
        while i < 15 :
            if len(AbsReflectance[i]) == len(lamb[0]):
                ABSR = str(ABSR)
                Fichier.write(ABSR)
                Fichier.write('\t')
                i += 1
            else :
                i += 1
    Dans le block while, montrez moi où ABSR est modifié?

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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    C'est bien le problème ! Je ne vois pas comment modifier ABSR, du coup j'essaye de revoir l'algorithme mais je ne m'en sors pas. Je suis dessus depuis deux jours ^^"

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Tenkaichi Voir le message
    Je ne vois pas comment modifier ABSR, du coup j'essaye de revoir l'algorithme mais je ne m'en sors pas. Je suis dessus depuis deux jours ^^"
    Pour modifier ABSR, c'est facile: ABSR = ... une nouvelle valeur... maintenant ce que vous voulez mettre comme nouvelle valeur, c'est vos données...
    note: si vous vous embrouillez à faire des trucs qui paraissent simples, peut être devriez vous commencer par les exercices encore plus simples que vous proposent les tutos. Moi je dis çà parce que si on lit votre code on ne comprend pas du tout le rapport avec écrire une liste de liste dans un fichier... Et si vous voulez faire quelque chose qui se raconte facilement "en français" et que vous n'arrivez pas à la traduire simplement en code qu'on puisse relire en comprenant que c'est bien ce que vous cherchiez à faire, c'est que vous avez sauté des étapes.

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

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oublions le code écrit précédemment qui n'est pas claire, si vous le voulez bien..
    Voici ce que je souhaiterais faire:
    Je possède une première liste nommée lamb ainsi qu'une seconde liste nommée AbsReflectance contenant 15 listes. Chacune de ces 15 listes contiennent environ 4000 données. Il y a autant de données dans la liste lamb que dans les listes contenue dans AbsReflectance.
    Maintenant ce que je souhaite faire c'est écrire dans un fichier texte le contenue de ces listes en colonnes. Ainsi je souhaite avoir une première colone avec toute les valeurs de la liste lamb, une seconde colonne avec toute les valeurs de la première liste contenue dans AbsReflectance un troisième colonne avec toute les valeurs de la deuxième liste contenue dans AbsReflectance, etc ...

    Avec-vous une idée de comment faire cela s'il vous plaît?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Tenkaichi Voir le message
    Avec-vous une idée de comment faire cela s'il vous plaît?
    Prenez une liste de liste plus simple comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> L = [ list('123'), list('456') ]
    >>> L
    [['1', '2', '3'], ['4', '5', '6']]
    pour écrire en colonnes et sortir:
    vous feriez comment?
    Pour sortir:
    • la première ligne, vous allez balayer toutes les listes pour en extraire le premier élément.
    • la 2ème ligne, vous allez balayer toutes les listes pour en extraire le 2ème élément.
    • etc...

    La boucle externe (qui construit chaque ligne) est une variable "i" qui varie de 0 au nombre d'éléments de la première liste.

    Cela fait, c'est pas compliqué de faire la même chose à une liste construite par l'ajout de votre première liste et de la liste de listes.

    Et une fois que vous aurez réussi à mettre en place votre double boucle (et c'est important d'apprendre à fabriquer ces choses là) on vous montrera comment Python permet de vous simplifier les choses dans ce cas là.

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

Discussions similaires

  1. Ecrire une chaine de caractère dans un fichier excel
    Par Wassim123 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/05/2008, 10h42
  2. Remplacer une chaine de caractère dans un fichier texte.
    Par Empty_body dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/01/2008, 11h16
  3. Réponses: 7
    Dernier message: 06/01/2007, 20h16
  4. Réponses: 3
    Dernier message: 25/07/2006, 08h40
  5. Serializer une ArrayList ou écrire dans un fichier texte?
    Par yvon_huynh dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/07/2006, 19h49

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