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 :

Récupérer données dans fichier .txt


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 23
    Par défaut Récupérer données dans fichier .txt
    Bonjour à tous,
    Je suis débutant en programmation, j'utilise plutôt des codes de calcul de Monte Carlo (MCNP) et j'aurai grand besoin de 'trier' un fichier texte.
    Voici le format de mon fichier:
    EC 1
    C 0 1983
    EC 2
    C 1 217
    EC 2
    C 1 583
    EC 2
    C 1 0
    EC 1
    C 0 64
    EC 3
    C 0 505
    C 1 89
    J'aimerais récupérer les lignes après EC 3 pour créer des graphs 2D. Par exemple pour le morceau de fichier j'aurai un point (505,89).
    J'imagine que c'est un code trivial pour un utilisateur moyen, mais j'ai cherché sur le net et j'arrive pour le moment seulement à ouvrir mon fichier et le lire ...
    De l'aide serait la bienvenue.
    Bien cordialement

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonjour,
    Citation Envoyé par hugues6358 Voir le message
    …j'aurai grand besoin de 'trier' un fichier texte.

    J'aimerais récupérer les lignes après EC 3 pour créer des graphs 2D. Par exemple pour le morceau de fichier j'aurai un point (505,89).
    …j'arrive pour le moment seulement à ouvrir mon fichier et le lire ...
    Pourriez-vous montrer votre code permettant d'ouvrir et de lire le fichier?
    Une fois le fichier ouvert et "lu" il n'est, normalement, pas très compliqué de parcourir les lignes afin de repérer la ligne contenant "EC 3" puis de récupérer les lignes suivantes.
    Ces lignes récupérées ne devraient pas poser de problème quand à la conversion en un format numérique. Non?

    PS: pourquoi parler de "trier" ce fichier?

    Clodion

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Il y a des petites difficultés tout de même...

    De temps en temps:


    • Il y a 2 lignes C 0 valeur et C 1 valeur
    • Il y a 1 ligne C 0 valeur
    • Il y a 1 ligne C 1 valeur
    • Il y a des lignes identiques EC 2 avec des coordonnées différentes pour la position 1 (que fait-on dans ce cas pour des coordonnées du type (pos 0, pos 1) ? )


    Va falloir expliquer un peu plus la démarche dans tel ou tel cas de figure...

    Que représente EC?
    Que représente

    • C
    • 0
    • 1983

    par exemple,

    Que faire au cas où on tombe sur

    EC 2
    C 1 217
    EC 2
    C 1 583

    ?

    Que devrait être le retour attendu, une fois toutes ces lignes traitées ?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 23
    Par défaut
    Bonjour à tous,
    Tout d'abord merci pour vos réponses rapides,

    J'ai quelque peu avancé et pour le moment je 'tri' les lignes "CO xxxx" et "C1 XXXX" dans deux fichiers .txt. voici mon code:
    k=open('17ml2012.txt','r')
    n = 0
    for line in k:
    n += 1
    k.close()
    y=open('17ml2012.txt','r')
    for i in range(n):
    a=y.readline()
    if 'EC 3' in a:
    b=y.readline()
    c=y.readline()
    fd=open('resu.txt','a')
    fd.write(b)
    fd.write(c)
    y.close()
    k=open('resu.txt','r')
    n = 0
    for line in k:
    n += 1
    k.close()
    y=open('resu.txt','r')
    for i in range(n):
    b=y.readline()
    c=y.readline()
    fd=open('resu1.txt','a')
    fd.write(b)
    fd=open('resu2.txt','a')
    fd.write(c)
    y.close()
    Mon objectif est de récupérer les XXXX après "CO" ou "C1" et tracer un graph avec le nombre XXXX de la ligne "C0" en abscisse et le nombre xxxxx de la ligne "C1" en ordonnée.
    Le fichier .txt que j'utilise est un fichier de sortie de détecteurs doubles, avec les lignes "EC1" qui donne une information sur le détecteur 1, la ligne"EC2" sur le détecteur 2 et enfin la ligne "EC3" sur la coincidence entre les deux détecteurs.
    Vous l'aurez compris, mon objectif est de tracer un matrice de coincidence les deux détecteurs.
    Je suis utilisateur de LabVIEW pour traiter mes données habituellement, mais vu la taille des fichiers .txt (80Giga) j'ai peut des temps de calcul ...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 23
    Par défaut Code simplifié
    Je suis désolé mais j'avance en même tps, j'ai simplifié le code:
    k=open('17ml2012.txt','r')
    n = 0
    for line in k:
    n += 1
    k.close()
    y=open('17ml2012.txt','r')
    for i in range(n):
    a=y.readline()
    if 'EC 3' in a:
    b=y.readline()
    fd=open('resu1.txt','a')
    fd.write(b)
    c=y.readline()
    fd1=open('resu2.txt','a')
    fd1.write(c)
    y.close()

    Bien cordialement,
    Hugues

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Quand tu postes du code, utilise les balises code. Le # dans la barre d'outils.

    Ton 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    k=open('17ml2012.txt','r')  #
    n = 0                       # Ces 5 lignes ne servent donc qu'à
    for line in k:              # compter les lignes du fichier.
        n += 1                  # Pas utile bien sur.
    k.close()                   #
     
    y=open('17ml2012.txt','r')
    for i in range(n):
        a=y.readline()
        if 'EC 3' in a:
            b=y.readline()
            c=y.readline()
            fd=open('resu.txt','a') # On va le réouvrir à chaque fois ?
            fd.write(b)
            fd.write(c)
    y.close()                   # et fd, on ferme pas ?
     
    k=open('resu.txt','r')      #
    n = 0                       #
        for line in k:          # Même chose que pour le premier bloc.
        n += 1                  #
    k.close()                   #
     
    y=open('resu.txt','r')
    for i in range(n):
        b=y.readline()
        c=y.readline()
        fd=open('resu1.txt','a')    # Même réouverture ...
        fd.write(b)
        fd=open('resu2.txt','a')    # idem, à cause du réemploi du nom 'fd' ?
        fd.write(c)
    y.close()                   # et fd ?
    ... mais vu la taille des fichiers .txt (80Giga) ...
    Qu'est-ce qui fait 80 Go, le fichier 17ml2012.txt ? dans ce cas une fonction génératrice s'impose.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 23
    Par défaut
    Oui le fichier d'entré peut aller jusqu'à 80Giga, je voulais commencer avec quelque chose de simple pour essayer de me mettre un peu en main python.
    Pour les commentaires, j'ai essayé en utilisant le # du clavier mais python ne veut pas exécuter...
    import os
    k=open('17ml2012.txt','r')
    n = 0
    for line in k:
    n += 1
    k.close()
    y=open('17ml2012.txt','r')
    os.remove('resu1.txt')
    os.remove('resu2.txt')
    for i in range(n):
    a=y.readline()
    if 'EC 3' in a:
    b=y.readline()
    d=b[4:10]
    fd=open('resu1.txt','a')
    fd.write(d)
    c=y.readline()
    e=c[4:10]
    fd1=open('resu2.txt','a')
    fd1.write(e)
    y.close()

    Avec ce code j'obtiens deux fichiers resu1 et resu2 que j'essaie maintenant d'utiliser pour tracer mon graph, mais j'ai des erreurs que je n'arrive pas à expliquer sur la fonction matplot...

    Lorsque j'aurai réussi à tracer avec cette méthode "simple" je m'occuperai des génératrices, donc je n'ai aucune idée de leur utilisation.

    Merci pour les réponses,

    Bien cordialement,

    Hugues,

Discussions similaires

  1. Enregistrer données dans fichier txt
    Par man0n dans le forum Tkinter
    Réponses: 14
    Dernier message: 30/04/2014, 15h31
  2. Extraire des données dans fichier txt
    Par islande dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 28/03/2013, 13h42
  3. Récupérer donnée dans fichier texte
    Par all4linux dans le forum Web
    Réponses: 6
    Dernier message: 12/06/2010, 12h01
  4. [XL-2003] Données dans fichier .txt vers tableau en .xls
    Par Invité1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/08/2009, 19h30
  5. lire données dans fichier txt
    Par flo456 dans le forum Langage
    Réponses: 5
    Dernier message: 14/09/2006, 08h01

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