begin process at 2010 07 29 15:51:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier & Disque

 > FONCTION COMPTER LE NOMBRE DE LIGNE

FONCTION COMPTER LE NOMBRE DE LIGNE


 Information sur la source

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier & Disque Classé sous :compter, lignes, fichier, texte, os Niveau :Débutant Date de création :02/02/2009 Date de mise à jour :02/02/2009 11:25:15 Vu :3 635

Auteur : thibault7249

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Bonjour, ma première fonction que je poste ... Pour les gros débutant (dont je fais parti) je pense que cela peut aider à comprendre comment on explore un fichier ligne par ligne avec file(...,...).

Source

  • import os , time
  • # FONCTION RENVOYANT LE NOMBRE DE LIGNES D'UN FICHIER TEXTE
  • def countLigne(fichier):
  • Liste=file(fichier,'r')
  • i=1
  • Ligne=Liste.readline()
  • # "Tant que la ligne n'est pas égale à "" "
  • # ==> tant qu'on est pas arrivé à la fin
  • while Ligne!="":
  • #on lit une ligne
  • Ligne=Liste.readline()
  • #on ajoute 1 à notre compteur
  • i+=1
  • #on retourne le compteur
  • return i
  • #on note que sous windows le symbole "\" doit etre doublé quand il y a certains caractères
import os , time

# FONCTION RENVOYANT LE NOMBRE DE LIGNES D'UN FICHIER TEXTE
def countLigne(fichier):

    Liste=file(fichier,'r')
    i=1
    Ligne=Liste.readline()
    # "Tant que la ligne n'est pas égale à "" "
    #  ==> tant qu'on est pas arrivé à la fin 
    while Ligne!="":
        #on lit une ligne
        Ligne=Liste.readline()
        #on ajoute 1 à notre compteur
        i+=1
    #on retourne le compteur
    return i

#on note que sous windows le symbole "\" doit etre doublé quand il y a certains caractères

 Conclusion

pour afficher faire un "print countLigne("nom_de_fichier")



Si quelqu'un à une meilleur solution car là mon projet doit traiter des fichiers de plus d'1 million de lignes ...
Excusez moi si vous trouvez ma sources inutiles xD mais bon peut être qu'à un certains niveaux on se rend plus compte de la difficulté pour les tout débutants :D


 Historique

02 février 2009 11:25:15 :
juste une relecture des fautes et du titre :D

 Sources de la même categorie

[BASH] ALERTE ESPACE DISQUE par zaggash
ANTILOG, MORT AUX .LOG par Clempython
Source avec Zip SYNCHRONISATION DE RÉPERTOIRES par wkenw
RENOMMER DES FICHIERS EN MASSE par ara3n
Source avec Zip Source avec une capture REDIMENSIONNEMENT D'IMAGES par guillaume_pays_cevenol

 Sources en rapport avec celle ci

Source avec Zip CONCATÉNER DES FICHIERS TEXTES par amaury74
RENOMMER DES FICHIERS EN MASSE par ara3n
RECHERCHE DE CHAINES DANS UN REPERTOIRE AVEC IGU par guillaume_pays_cevenol
RECHERCHE D'UNE CHAINE DANS DES FICHIERS par guillaume_pays_cevenol
Source avec Zip Source avec une capture BROUILLEUR DE TEXTE par vychnou

Commentaires et avis

Commentaire de lespinx le 03/02/2009 11:07:14

Bonjour,
1)
Utiliser "readlines" au lieu de "readline". La méthode  "readlines" renvoie toutes les lignes du fichier dans une liste.
Il ne reste plus qu'a appliquer la méthode "len(liste)" pour obtenir le nombre d'éléments de la liste donc le nombre d'enregistrements du fichier.
Exemple
# -*- coding: ISO-8859-15 -*-
import os , time
# FONCTION RENVOYANT LE NOMBRE DE LIGNES D'UN FICHIER TEXTE
def countLigne(fichier):
    Liste=file(fichier,'r')
##    i=1
    i=Liste.readlines()

##    # "Tant que la ligne n'est pas égale à "" "
##    #  ==> tant qu'on est pas arrivé à la fin
##    while Ligne!="":
##        #on lit une ligne
##        Ligne=Liste.readline()
##        #on ajoute 1 à notre compteur
##        i+=1
    #on retourne le compteur

    return i
#on note que sous windows le symbole "\" doit etre doublé quand il y a certains caractères

2)La mème chose avec une écriture plus pythonesque
i = len(open(fichier,'r').readlines())
print "nb_lignes",i

L'inconvénient de cette méthode est que le fichier est chargé totalement en mémoire.

3)N'ayant pas sous la main un fichier de plus d'un million d'enregistrements pour faire des tests, je joins un exemple tiré d'un livre "Python par l'exemple (O'Reilly)", réputé plus rapide et adapté pour de très gros fichiers.

for i, ligne in enumerate(open(fichier,'r')):
    pass
i += 1
print "nb_lignes",i

Le fichier est lu ligne par ligne dans une boucle "for"
Le compteur "i" est incrémenté par la méthode "enumerate"
La méthode "enumerate" enumère de 0 a n c'est la raison pour laquelle on fait i += 1

Alors bons tests.
Cordialement.

Commentaire de thibault7249 le 03/02/2009 11:34:34

effectivement :D je te remercie !!! le temps de traitement est divisé par 4 :
import os, time

def countLigne(fichier):

    Liste=file(fichier,'r')
    i=1
    Ligne=Liste.readline()
    # "Tant que la ligne n'est pas egale a "" "
    #  ==> tant qu'on est pas arrive a la fin
    while Ligne!="":
        #on lit une ligne
        Ligne=Liste.readline()
        #on ajoute 1 a notre competeur
        i+=1
    #on retourne le compteur
    return i

def countLigne2(fichier):
    for i, ligne in enumerate(open(fichier,'r')):
        pass
    i += 1
    return i

a = time.clock()
print countLigne(fichier)
b= time.clock()-a
print b

a = time.clock()
print countLigne2(fichier)
b= time.clock()-a
print b



Resultats :

1448915
2.49478299616
1448914
0.653769124288


Je dois en conclure que pour ce type d'itération on préfèrera une boucle "for" ?

Commentaire de thibault7249 le 03/02/2009 15:03:50

la différence de 1 entre les 2 nombres de lignes vient du fait que la dernière ligne est vide
enfin c'est ce que je pense

Commentaire de freecrazy le 01/03/2009 11:04:03

Ces petits bouts de code, pour des petits pb sont toujours intéressants.
La différence de 1 vient simplement de l'initialisation de i=1 alors qu'on ne sait pas encore s'il y a une ligne ou non. Il faut l'initialiser à 0. D'ailleurs pour être "logique" jusqu'au bout je mettrai le i+=1 juste après le while.
Le gain de temps est impressionnant !
Cordialement

Commentaire de Julien39 le 02/03/2009 00:08:02 2/10

cette source n'est pas tres interessante, néamoins, je comprends parfaitement qu'on ait envie de poster ses premiers codes, encore faudrait il qu'ils soient justes, je ne reviens pas sur les erreurs précédement expliquées. Tout de meme c'est beaucoup pour un code aussi simple, j'en ajoute une, tu ne refermes pas le fichier et utilise plutot open que file.

Commentaire de Skami18 le 12/07/2009 13:23:40 10/10

Wééé super!
C'est pile ce qu'il me falait!
Merci :-)

Commentaire de Clempython le 03/01/2010 01:50:23

#la même chose en 10 fois plus court et rapide:

Liste = file("release_249.txt",'r')
lignes = Liste.readlines()
print len(lignes)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

ecrire un dico dans un fichier texte [ par airod ] je cherche depuis un bout de temps mais rien y fait! Mon prob: je pars d'un fichier de config (*.cfg), et j'en crée un dico dans mon appli, ceci tri de fichier [ par mtanfin ] Bonjour;Alors voilà en fait je voudrais trier des fichiers en fonction de leur date de création. en fait le but est de regarder dans chaque fichier si python debutant [ par supai ] print "début" # début procédure from os import chdir chdir("/Volumes/GERTEX/_test/") import shutil, string, re obfic = open("taglist.xml","r") # Le probleme avec os.path.getctime() [ par Bl0tCh ] Voilà, Donc cette fonction est censée me donner la date de creation du fichier (en secondes) mais le probleme c ke elle me donne la premiere date de c Extraire des informations d'un fichier texte [ par med93100 ] Bonjour la compagnie , Je tiens deja à vous dire que je suis débutant en python , donc mon prolbème est la , j'ai un texte avec plein de code html pa (python] suppression de certaines parties d'un fichier texte [ par Flobertime ] Bonjour, Je souhaiterai supprimer certaines partie d'un fichier texte. Ces parties seraient par exemple de la ligne 1 à la ligne 12 et de 25 à 45. o utilisation des listes [ par bossou ] Bonjour tout le monde. j'ai un fichier texte que je crée à partir un autre fichier. le nouveau fichier créer contient plusieurs lignes dont chaque lig Problème de vitesse exécution d'un script [ par MasterID ] Bonjour,j'ai réalisé un script qui récupère des informations dans un fichier texte, les traitent et retourne un autre fichier texte.Le fichier texte c Traitement de fichier texte [ par garoubeef ] Bonjour, je dispose d'un fichier texte rempli d'adresses email. Je dois traiter ce fichier de façon à recupérer la chaine de caractère precedent le " Imprimer un fichier *.txt depuis python [ par sevanaya ] Bonjour a tous, Je vais peut etre passer pour un naz, mais je débute soyez indulgeants S.V.P !! Alors voila mon probleme je devellope en ce moment


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales