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 :

nombre de lignes dans un fichier texte


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut nombre de lignes dans un fichier texte
    Bonjour,

    je débute en python. Je m'appuie donc sur des lignes de commande trouvées sur votre forum ou dans des cours en ligne.
    Bref, j'ai crée un petit fichier de 6 lignes et 115 caracteres.

    Voici ce que j'ai écrit dans PyPE

    #path
    import os
    import readline

    os.chdir ('/home/papa/Bureau/initiation_python')
    contenu = ()

    #Lecture fichier
    with open ('fichier_type.txt', 'r') as mon_fichier :
    contenu = mon_fichier.read ()
    print (contenu)

    mon_fichier.close ()


    #nombre de lignes dans le fichier
    n=0

    for truc in contenu:
    n = n + 1
    print (n)


    OR contrairement à ce que j'ai trouvé sur votre forum, (n) contient le nombre de caractères et non le nombre de lignes d'une part et d'autre part ça fonctionne en mettant n'importe quoi derrière for (truc par exemple).

    Je n'arrive pas à trouver mon erreur.

    Merci d'avance pour l'aide.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Pour que le code Python soit lisible avec les indentations, il faut le placer dans les tags de code: cliquer sur le '#' en haut de la fenêtre d'édition.

    Sinon, le "mon_fichier.read()" lit TOUT le fichier et renvoie une seule chaine de caractères. Les lignes sont dedans, séparées par les fins de ligne. C'est donc normal que la boucle "for truc in contenu:" renvoie en fait tous les caractères du fichier.

    Si on veut une liste de lignes, on peut utiliser "mon_fichier.readlines().

    A noter qu'avec "with open(...):", il n'est pas nécessaire de fermer le fichier: la sortie du bloc le fait automatiquement.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci pour l'aide

    j'ai compris.

    Je pense que j'aurai à nouveau besoin d'aide.

    Bon WE

    francois

  4. #4
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Le problème est sur la fin, on a une chaine de caractères (str) avec le contenu du fichier. On pourrait obtenir le résultat par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    contenu=fichier.read()#je résume un peu le code
    #et là on fait un split '\n' (soit saut de ligne)
    contenu=contenu.split('\n')#soit une liste des lignes
    nb_lignes=len(contenu)
    Tout simplement.
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par stalacta Voir le message
    Le problème est sur la fin, on a une chaine de caractères (str) avec le contenu du fichier. On pourrait obtenir le résultat par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    contenu=fichier.read()#je résume un peu le code
    #et là on fait un split '\n' (soit saut de ligne)
    contenu=contenu.split('\n')#soit une liste des lignes
    nb_lignes=len(contenu)
    Tout simplement.
    .splitlines et .readlines ont l'avantage d'etre independant de l'OS.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Ca a juste l'avantage de ne pas importer de module.
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par stalacta Voir le message
    Ca a juste l'avantage de ne pas importer de module.
    De quels modules parlez vous?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Je ne connais les fonction readline et tout mais vu le code de base ça m'a laissé à penser qu'il fallait importer le module readline. Ou alors j'ai mal interprété.
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  9. #9
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    readline et readlines font partie des méthodes de base de Python et ne nécessitent aucune importation supplémentaire.

    Par contre, il est possible de compter les lignes en comptant simplement les caractères fin de ligne "Line Feed" (10). Cela fonctionne sous Windows (13 10), Linux (10) et Mac OS X (10), mais pas sous l'OS de Mac avant OS X (13).

    Si le fichier peut être mis entièrement en mémoire (.read()), on compte avec .count(). Si le fichier est trop grand, il faut "bufferiser" et compter sur chaque buffer.

    Il ne faut pas oublier d'examiner en plus le dernier caractère du fichier, car la dernière ligne peut ne pas se terminer par un fin de ligne, mais il faut la compter quand même.

    Je n'ai pas vérifié que ça marche avec tous les encodages possibles, mais je n'ai pas trouvé d'obstacle avec les encodages courants concernant les caractères latins (y compris utf-8, utf-16, ...).

    J'ai fait un tuto sur ce genre de technique, et l'essai que j'ai fait sur 1 million de lignes donne un temps divisé par 10 pour connaître le nombre de lignes, par rapport au comptage traditionnel nécessitant la lecture des lignes:
    http://python.jpvweb.com/mesrecettes...lignes_fichier.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Compter le nombre de ligne dans un fichier text
    Par nekcorp dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/06/2018, 14h10
  2. Calcul du nombre de lignes dans un fichier texte en JavaScript
    Par developppez dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/08/2017, 08h13
  3. [VBS] Fonction qui compte le nombre de lignes dans un fichier texte
    Par ProgElecT dans le forum Vos Contributions VBScript
    Réponses: 0
    Dernier message: 03/05/2012, 13h48
  4. [Fichier] Nombre de ligne dans un fichier texte
    Par NewSer dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2004, 16h58
  5. Réponses: 2
    Dernier message: 02/03/2004, 19h38

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