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 :

Création de fonction sur un fichier texte


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Par défaut Création de fonction sur un fichier texte
    Bonjour à tous,
    Je cherche la solution - je suis à peine débutant .... - pour la création d'une fonction de traitement sur un fichier, ce qui bloque un peu (beaucoup !) un script que je voudrai créer.

    - J'ai un fichier texte avec des centaines de lignes à la suite qui ont été créées automatiquement, avec des logs venant d'un GPS. Tout le fichier est sur le même schéma :

    $GPGGA,211859.400,4901.2847,N,00305.8942,E,1,07,1.24,168.4,M,47.3,M,,,1.30
    $GPRMC,211859.400,A,4901.2847,N,00305.8942,E,0.00,0.00,260619,,,A*62,1.30
    $GPGGA,211859.600,4901.2847,N,00305.8942,E,1,07,1.26,168.4,M,47.3,M,,*61,1.29
    $GPRMC,211859.600,A,4901.2847,N,00305.8942,E,0.00,0.00,260619,,,A*60,1.29


    - Les seules lignes qui m'intéressent sont celles commençant par $GPGGA
    - Puis je dois extraire certaines données sur chacune de ces lignes : j'ai besoin de 6 "parties" seulement (en gras) :

    $GPGGA,211859.600,4901.2847,N,00305.8942,E,1,07,1.26,168.4,M,47.3,M,,*61,1.29

    - Et je dois récupérer ces parties dans un nouveau fichier texte

    J'ai essayé avec "readline" ou "enumerate" mais sans succès, donc je sèche un peu !
    Merci beaucoup pour votre aide et vos conseils !
    Nico

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Salut,

    D'abord, vous pouvez remarquer que vos lignes sont des items séparés par ,.

    Pour le reste, faire une boucle qui lit le fichier ligne à ligne et à chaque itération:
    • tester si la ligne commence par $GPGGA (avec str.startswith)
    • si c'est le cas:
      • transformer la ligne en liste avec str.split(',')
      • extraite les items aux indices qui vous intéressent pour fabriquer une nouvelle liste,
      • reconstruire la ligne avec ','.join de cette liste
      • l'écrire.


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

  3. #3
    Membre averti
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Par défaut
    Merci beaucoup, je regarde ça tout de suite

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    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 060
    Par défaut
    Bonsoir,

    Un conseil, faîtes déjà ce travail sur une seule ligne représentant un objet str (chaîne de caractères).

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    s = "$GPGGA,211859.400,4901.2847,N,00305.8942,E,1,07,1.24,168.4,M,47.3,M,,,1.30"
    # suite du traitement de s
    Si vous le faîtes sur une, vous pourrez utiliser comme dis par mon VDD une boucle pour traiter chaque ligne du fichier.

  5. #5
    Membre averti
    Homme Profil pro
    Créateur d'entreprise
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Créateur d'entreprise
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Par défaut
    Merci Fred, je vais essayer ça également

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Nico_projet Voir le message
    - J'ai un fichier texte avec des centaines de lignes à la suite qui ont été créées automatiquement, avec des logs venant d'un GPS. Tout le fichier est sur le même schéma :

    $GPGGA,211859.400,4901.2847,N,00305.8942,E,1,07,1.24,168.4,M,47.3,M,,,1.30
    $GPRMC,211859.400,A,4901.2847,N,00305.8942,E,0.00,0.00,260619,,,A*62,1.30
    $GPGGA,211859.600,4901.2847,N,00305.8942,E,1,07,1.26,168.4,M,47.3,M,,*61,1.29
    $GPRMC,211859.600,A,4901.2847,N,00305.8942,E,0.00,0.00,260619,,,A*60,1.29


    - Les seules lignes qui m'intéressent sont celles commençant par $GPGGA
    - Puis je dois extraire certaines données sur chacune de ces lignes : j'ai besoin de 6 "parties" seulement (en gras) :

    $GPGGA,211859.600,4901.2847,N,00305.8942,E,1,07,1.26,168.4,M,47.3,M,,*61,1.29

    - Et je dois récupérer ces parties dans un nouveau fichier texte
    J'aime beaucoup Python et l'utilise très souvent.
    Toutefois dans ce cas précis, et si t'es sous système type unixoïde, alors plutôt que de réinventer le fil à couper l'eau chaude, je pense qu'un grep suivi d'un cut pourrait faire l'affaire => grep "^\$GPGGA," fichier_log |cut -f3,4,5,6,10,16 -d, >nouveau_fichier_texte...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/05/2007, 17h44
  2. lire/écrire sur un fichier texte sur un serveur distant
    Par nabmoah dans le forum Visual C++
    Réponses: 6
    Dernier message: 12/02/2007, 10h27
  3. Réponses: 8
    Dernier message: 14/09/2006, 16h43
  4. Stats sur un fichier texte
    Par fermat dans le forum Delphi
    Réponses: 3
    Dernier message: 17/08/2006, 00h50
  5. Réponses: 7
    Dernier message: 23/03/2005, 22h23

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