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 :

extraire une donnée de n fichiers textes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 1
    Par défaut extraire une donnée de n fichiers textes
    Bonjour,

    J'ai 250 fichiers textes, tous identiques dans la forme, mais dans lesquels sont affichés pas mal d'informations qui ne me sont d'aucune utilité. Je souhaite récupérer la donnée qui se situe à la 35 ème ligne sous la forme :
    Photometric [photo]=-73.1433725930522

    Je ne connais pas vraiment python. Je sais à peu près comment faire pour ouvrir un fichier texte, mais ca se limite à peu près à ca.

    Savez vous comment faire ?

    Merci d'avance.

  2. #2
    Expert confirmé

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

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

    Rien de plus simple en Python, un execice de débutant.

    Tout d'abord, il te faut la liste de tes fichiers.
    Soit tu la possèdes déjà, prête à copier-coller dans le code et c'est bon.

    Soit ils sont tous dans le même dossier et occupent seul ce dossier, dans ce cas os.lisdir pourra convenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >>> import os
    >>> files = os.listdir('/home/vincent/Documents')
    files contiendra les noms de fichiers seuls (basename)

    Soit tu dois les trier dans un dossier, si tu peux les trier avec leur extension ou une partie distinctive de leur nom, Python implémente la commande Unix glob
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >>> import glob
    >>> files = glob.glob('/home/vincent/Documents/' + '*.txt')
    files contiendra les chemins complet des fichiers (abspath)

    Soit tu es dans une situation plus complexe et ce sera sur devis.

    Ensuite il faut lire les fichiers.

    Soit leur taille est raisonable, on relève les lignes sous forme de liste et on ne conserve que la 35ème ligne à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> for file in files:
    ...     with open(file, 'r') as inf:
    ...             lines = inf.readlines()
    ...             lines[34]
    pour une taille moyenne de 200 lignes par fichier Python te fera tout cela un gros dixième de seconde.

    soit leur taille est démesurée et il est préférable de ne lire que les premières lignes jusqu'à la 35ème qui nous intéresse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> lst = []
    >>> for file in files:
    ...     with open(file, 'r') as inf:
    ...             for i in range (35):
    ...                     l = inf.readline()
    ...             lst.append(l)
    Là le temps risque de ne pas être mesurable car trop court, mais ce n'est peut-être pas important pour toi.

  3. #3
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Ta dernière solution , est-ce qu'elle servirait pour lire les lignes d'un pdf ?
    En tout cas , pour un gros fichier txt , cela semble possible .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> for file in files:       # là , on dirait un truc spécial ...
    ...     with open(file, 'r') as inf:        # là , c'est quoi inf , on dirait un ovni
    Ce qui est intéressant : c'est la manière dont tu as pu conserver la ligne donnée , et l'autre , tu as utilisé la méthode append() pour tout lister (en fait les lignes du texte ) .

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour

    Non, à part le parcourt de répertoire, cela ne peut servir pour lire extraire l'information d'un pdf (fichier binaire).
    En revanche, via le module pdf2text (fondé sur pdfminer) c'est envisageable.

Discussions similaires

  1. extraire les données d'un fichier text vers une table access
    Par djatto dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/09/2008, 18h51
  2. Extraire une donnée d'un fichier aleatoirement
    Par ranell dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 25/03/2007, 23h33
  3. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 16h01
  4. Extraire des donnés d'un fichier texte
    Par sadsad dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2006, 16h09
  5. extraire certaines données d'un fichier texte
    Par davz88 dans le forum C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h00

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