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 :

boucle for range pour lire gros fichier


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Par défaut boucle for range pour lire gros fichier
    Bonjour,

    J'aimerai utiliser une boucle for pour analyser un fichier dans un programme python, mais je ne dois pas tout analyser d'un coup (fichiers de plusieurs go en binaire)
    Y a-t-il un moyen de faire un for range qui commence à zéro, analyse 50000 lignes et continue jusqu'à la fin du fichier (nombre de lignes inconnu).
    Je ne vois pas comment lui dire de continuer jusqu'à la fin.
    for trucbidule in range(0,50000,fin du fichier)

    Merci pour votre aide,
    lordyan

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

    Un fichier binaire n'est pas découpable en lignes... mais si c'est un fichier texte, ce n'est pas la taille du fichier qui va vous donner le nombre de lignes à lire (et le nombre d'itérations à faire).

    Ceci dit, la lecture d'un fichier se fait séquentiellement. Si on fait une boucle qui lit le début du fichier, à la sortie de la boucle, on pourra toujours lire le reste (ou se contenter de fermer le fichier si on n'en a que faire).

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

  3. #3
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Par défaut
    Merci pour la réponse et l'explication.
    En fait je reprends un programme et je débarque en programmation.

    J'ai bien une variable au début
    nbTrame = 50000

    et plus loin un traitement
    for integration in range(nbTrame):
    ...

    Donc ça joue bien sur les 50000 premiers lignes trucs

    Et j'aimerai savoir comment on fait pour qu'il traite le nombre défini dans la variable et qu'ensuite il en analyse encore 50000 puis 50000 jusqu'à la fin du fichier.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par lordyan Voir le message
    Et j'aimerai savoir comment on fait pour qu'il traite le nombre défini dans la variable et qu'ensuite il en analyse encore 50000 puis 50000 jusqu'à la fin du fichier.
    On peut répéter toute séquence d'instructions (y compris une boucle) avec une boucle ou en l'encapsulant dans une fonction qui sera appelée en boucle.
    Et ça serait bien d'ouvrir un tuto. pour apprendre les bases de la programmation avant de vouloir toucher à un programme écrit par d'autres sans trop rien y comprendre.

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

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    hello,
    Citation Envoyé par lordyan Voir le message
    Et j'aimerai savoir comment on fait pour qu'il traite le nombre défini dans la variable et qu'ensuite il en analyse encore 50000 puis 50000 jusqu'à la fin du fichier.
    Peut être avec une méthode "paresseuse" qui utilise yield ou iter ? voir ici
    Ami calmant, J.P

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    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 833
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par lordyan Voir le message
    Et j'aimerai savoir comment on fait pour qu'il traite le nombre défini dans la variable et qu'ensuite il en analyse encore 50000 puis 50000
    1) mettre un nombre "n" à 0
    2) faire une boucle de "n" à "n + 50000"
    3) rajouter 50000 à "n" et revenir à 2

    Citation Envoyé par lordyan Voir le message
    jusqu'à la fin du fichier.
    Quel est le lien entre "50000" et le fichier ? Comme on te l'a dit, on ne peut pas parler de "lignes" pour un fichier binaire. Donc tu veux lire 50000 quoi?
    Quoi qu'il en soit il te faut apprendre à manipuler un fichier. Tu as par exemple seek() qui te permet de te placer à une position précise (en octets) dans le fichier. Tu peux aussi utiliser read(n) qui te permet de lire "n" octets et tell() qui te dit où tu es (en octets). Bref différents outils qui font tous un travail simple mais que tu dois combiner pour créer ton traitement.
    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]

  7. #7
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Par défaut
    Merci pour vos réponses,
    je découvre le python petit à petit.
    J'ai résolu en faisant une boucle dans une boucle.

Discussions similaires

  1. Boucle pour lire des fichiers
    Par VirarK dans le forum C
    Réponses: 4
    Dernier message: 06/11/2019, 17h53
  2. Problème pour lire mon fichier ligne par ligne : boucle infinie
    Par irishupk dans le forum Général Python
    Réponses: 5
    Dernier message: 16/06/2019, 11h12
  3. [Débutant] faire une boucle pour lire plusieurs fichiers à la suite
    Par hittie dans le forum MATLAB
    Réponses: 6
    Dernier message: 30/12/2011, 13h39
  4. Réponses: 1
    Dernier message: 18/02/2008, 19h21
  5. Probleme pour lire un fichier Ini
    Par Sebinou dans le forum C++Builder
    Réponses: 11
    Dernier message: 10/03/2004, 23h22

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