Hello,
je vois pas le rapport avec Dijkstra mais OK
Envoyé par
Bartowski
Bonjour je souhaite lire les données d'un fichier texte à partir d'une fonction, j'y arrive mais je souhaiterai associer une variable à la 1ère ligne de ce que j'obtiens. Si quelqu'un peut m'aiguiller merci.
1 2 3 4 5 6 7
| def open
f=File.open("données.txt", "r")
f.each_line { |ligne|
puts " #{ligne}"
}
end
open |
D'une part je n'appellerais pas ça "open" : à la rigueur "first_line" ou "get_first_line".
Ensuite, je ferais probablement en une seule ligne genre :
ligne_1 = File.open("données.txt", "r") {|f| f.gets }
Gets prend jusqu'à la première ligne.
J'utilise la syntaxe "block" de File::open car sinon il faut penser à fermer le fichier (f.close).
Là, le fichier est ouvert du début à la fin du block, à l'intérieur duquel il s'appellera f.
{|f| f.gets } # juste après il y aura un f.close automatique
Comme je suis à peu près sûr que tu ne veux pas juste la première ligne, tu peux tout lire d'un coup avec IO.readlines.
C'est un peu une fonction de fainéant (ne fais pas ça pour avoir 20 lignes dans un fichier de 1Go) mais ça marche bien.
1 2 3 4 5
| lignes = IO.readlines("données.txt")
ligne_1, reste = lignes.first, lignes[1 .. -1]
puts "Première ligne : #{ligne_1}"
puts "Il y a #{lignes.size} autres lignes, voici les 10 premières :"
puts reste[0..10].join("\n") |
Partager