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

Ruby Discussion :

Reprendre au début d'un fichier


Sujet :

Ruby

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 53
    Points
    53
    Par défaut Reprendre au début d'un fichier
    Bonjour à tous,

    Je ne trouve pas comment revenir au début d'un fichier à la lecture de celui-ci. J'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    file = File.open("fichier.txt", "r", encoding: Encoding::UTF_8 )
    		file.each do |line|
    			# code...
    			# Revenir au début ?
    		end
    Est-ce que quelqu'un pourrait me dire comment faire ? J'ai parcouru la doc mais je ne trouve rien là dessus. Je sais pourtant que c'est possible.

    Merci pour votre aide.

  2. #2
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    La fonction que tu cherches est IO#rewind (File hérite de IO), mais ça me semble très dangereux de faire ça au sein de la boucle each, car tu pourrais tomber dans une boucle infinie si jamais UN_TEST était toujours vrai (par exemple avec un fichier qui n'aurait pas le format que tu attends) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    file.each do |line|
      # code...
      if UN_TEST
        file.rewind
      end
    end

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 53
    Points
    53
    Par défaut
    En fait j'ai fais un copier/coller un peu rapide. J'aimerais le rewind dans une boucle comme celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    countries.length.times do |n|
    Donc le risque de boucle infini n'est pas possible je pense.

    Qu'en penses-tu ?

    Sinon merci pour la réponse.

    EDIT : D'ailleurs est-il mieux d'ouvrir/fermer un fichier successivement ou le rewind ?

  4. #4
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Je ne comprends pas ce que tu cherches à faire, mais effectivement si ta boucle ne concerne pas le fichier il n'y aura pas de boucle infinie. Mais à quoi cela pourrait te servir ?

    Je suppose que le rewind est un peu plus performant que la fermeture/réouverture du fichier mais c'est surtout un peu moins de code à écrire.

  5. #5
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Points : 53
    Points
    53
    Par défaut
    En fait je suis dans une boucle et je me demande si c'est pas mieux le rewind. Vu ta réponse je ne pense pas du coup...

Discussions similaires

  1. [VBA-Excel]Peut-on insérer des nouvelles lignes au début d'un fichier
    Par Jusomi31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 15h03
  2. Réponses: 2
    Dernier message: 05/04/2007, 09h39
  3. Ecrire au début d'un fichier
    Par Core8 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 15/02/2007, 11h28
  4. écrire au début d'un fichier sans l'écraser
    Par Davboc dans le forum Langage
    Réponses: 11
    Dernier message: 30/12/2005, 01h48
  5. [String] Caractère en trop au début d'un fichier
    Par Seiya dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 12/07/2004, 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