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 :

lire une ligne dans un tableau


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Par défaut lire une ligne dans un tableau
    bonjour,

    je fais un script sous python qui fait creer un fichier txt et y enregistrer quelques données, sous forme d'un tableau,
    mnt je dois faire un autre script qui lis le fichier, c a d je veux savoir comment je dois me procéder pour choisir une tell ligne dans le tableau enregistré et la lire ou l'afficher?

    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Tout dépend de la façon dont tu stockes ton tableau dans le fichier. Tu peux nous en dire plus ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Par défaut
    Bonjour,

    j'ai fait ce script:

    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
    import GPS
    import MOD
     
    file = open('valeur1.txt','w')
     
    n=0
    i=0
    Data=0
    while i<3:
     
            Data = GPS.getActualPosition()
     
            MOD.sleep(300)
            print Data
            file.write( Data+"#" )
            i=i+1
     
    file.close()

    ce script me génére un fichier valeur1.txt qui contient les données suivants:

    095212.110,3332.5612N,00738.4251W,7.4,-45.2,2,83.68,8.13,4.38,181208,03
    #095215.110,3332.5624N,00738.4075W,7.4,-45.2,2,270.02,2.70,1.45,181208,03
    #095218.109,3332.5625N,00738.4067W,7.4,-45.2,2,267.52,8.13,4.38,181208,03
    #

    ce que je veux faire par la suite, c'est faire un autre script sous python, pour parcourir ce fichier généré (valeur1), donc je parcoure la ligne une fois je rencontre '#' ca signifie fin de trame i donc je l'affiche ou je l'écris dans un autre fichier, et ainsi de suite

    voila (:

    et merci infiniment pour votre interet

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Il faut lire les données comme tu les as enregistrées, mais, est-ce nécessaire que la liste soit sous cette forme ? Il aurait été judicieux d'écrire un élément par ligne sans autre séparateur, ce qui aurait permis une extraction très facile
    Avec le format que tu as donné, si le fichier n'est pas trop gros on peut le charger en RAM et faire un split dessus pour récupérer la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fd = open('monfichier.txt', 'r')
    data = fd.read()
    liste = data.split('#')[:-1] #Pour ignorer l'élément vide à cause du # à la fin
    fd.close()
    print liste
    Ceci affiche, avec les données que tu as fournies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ['095212.110,3332.5612N,00738.4251W,7.4,-45.2,2,83.68,8.13,4.38,181208,03\n',
    '095215.110,3332.5624N,00738.4075W,7.4,-45.2,2,270.02,2.70,1.45,181208,03\n',
    '095218.109,3332.5625N,00738.4067W,7.4,-45.2,2,267.52,8.13,4.38,181208,03\n']

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Par défaut
    rebonjour (:

    merci pour la réponse,

    avec le script que vous m avez envoyé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fd = open('monfichier.txt', 'r')
    data = fd.read()
    liste = data.split('#')[:-1] #Pour ignorer l'élément vide à cause du # à la fin
    fd.close()
    print liste
    je pense que il va commencer la lecture, une fois il rencontre le # il va m afficher la donné, mé il va continuer comme ca, jusqu'a la fin du fichier,

    ce que je veux moi, ce n'est pas afficher tout le contenu du fichier, mé juste par exemple une donné (une seulle trame), ou bien deux trames... selon ma demande, tu voies?

    dans ton cas, il va partager la donné par # et afficher

    merci

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Le code va lire le fichier, et reconstituer la liste. J'ai simplement affiché la liste pour que tu voies ce qui est récupérer, à toi de la traiter comme bon te semble, liste[i] contient la i-ième donnée.

  7. #7
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Par défaut
    Bonjour oiffrig

    merci beaucoup, Ok je vais tester le code et revenir vers toi pour te répondre , en fait pour chaque lecture je vais copier la trame dans un autre fichier

    Merci par avance

  8. #8
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Par défaut
    salut (:

    tu m'avais dit que l'écriture sera meilleur avec le retour à la ligne, c'est sur, mais lors de la lecture, comment je détecte la fin d'une trame.? est ce que en faisant:

    fd = open('monfichier.txt', 'r')
    data = fd.read()
    liste = data.split('\n')[:-1]
    fd.close()
    print liste

    comme ca si je fais list(5) par exemple il va me lire 5eme trame ?

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Si tu écris tes données de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    095212.110,3332.5612N,00738.4251W,7.4,-45.2,2,83.68,8.13,4.38,181208,03
    095215.110,3332.5624N,00738.4075W,7.4,-45.2,2,270.02,2.70,1.45,181208,03
    095218.109,3332.5625N,00738.4067W,7.4,-45.2,2,267.52,8.13,4.38,181208,03
    Tu peux obtenir les lignes dans une liste en lisant avec readlines (attention cependant, il y aura toujours les caractères de fin de ligne, mais tu peux les supprimer facilement)
    Pour avoir, par exemple la deuxième ligne (donc d'indice 1, la numérotation commence à 0) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fd = open('monfichier.txt', 'r')
    lignes = fd.readlines()
    print lignes[1].rstrip() #rstrip enlève les espaces à droite

  10. #10
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Par défaut
    Bonjour ,

    oui comme ca on aura pas besoin de controler l'existence du "\n" ou bien "#".

    sinon stp, si deux fichiers txt et je veux faire la comparaison entre les deux comment faire?

    en fait j'ai un fichier qui contient une liste des trames gps à l'émission, et un autre fichier à la réception qui contient les meme trames recu, je voulais faire la différence de chaque trame envoyé et recu pour voir si il y a une erreur de transmission..., donc je dois faire la comparaison entre les deux fichiers ligne par ligne ...

    stp est ce que c'est possible de le faire stp?

  11. #11
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Par défaut
    bonjour,

    pour ma question précédente, je voulais faire la comparaison entre deux ficher.txt, le premier contient les trames envoyé et le deuxieme contient les trames recu, donc je dois me proceder à faire une comparaison entre les trames envoyé et recu pour voir si il y a une erreur de transmission ou non,
    donc je dois tout d abord ouvrir fichier par fichier, et pointer dans leur début et comparairer caractere par caractere,

    si qq1 a des idées

    Merci par avance

Discussions similaires

  1. [HTML] Sélectionner une ligne dans un tableau en html
    Par jehlg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/06/2008, 11h55
  2. Lire une ligne dans un fichier
    Par dbozec dans le forum Langage
    Réponses: 3
    Dernier message: 03/05/2006, 23h22
  3. [VBA-E]insertion automatique d'une ligne dans un tableau
    Par janus82 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/04/2006, 15h42
  4. selection d'une ligne dans un tableau en html
    Par jehlg dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2006, 23h08
  5. probleme bizarre de hauteur auto d'une ligne dans un tableau
    Par zax-tfh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/01/2005, 23h34

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