I’m just beginning to learn the Ruby progamming language, although I
have some previous programming experience in Java. I would like to
know if how I can detect the end of a file when parsing a text file in
Ruby. I don’t want to throw an error or exception when I reach the end
of the file, I just want to tell my parser to stop parsing.
Thanks for the help.
The SketchUp Artist
error or exception when I reach the end of the file, I just
want to tell my parser to stop parsing.
Thanks for the help.
The SketchUp Artist
File.open(“filename”) do |file|
while line = file.gets
puts line
end
End
File.open in a block form such as above automatically closes the file
neatly
at the end of the block.
The while loop inside the block assigns the next line from the file to
the
variable “line”.
When there is no next line to read because the end of file has been
reached,
the variable will be set to nil. Since the variable, apart from being
assigned, is also evaluated as part of the condition of the while loop,
and
since nil evaluates to false, no more lines will be read once EOF has
been
reached.
HTH,
Felix
On 7/25/07, [email protected] [email protected] wrote:
I’m just beginning to learn the Ruby progamming language, although I
have some previous programming experience in Java. I would like to
know if how I can detect the end of a file when parsing a text file in
Ruby. I don’t want to throw an error or exception when I reach the end
of the file, I just want to tell my parser to stop parsing.
As far as I know, all the IO methods return nil on EOF except for
readline. You could read the file with:
File.open(path) do |f|
while line=f.gets
# parse
end
end
or
File.open(path) do |f|
begin
loop do
line = f.readline
# parse
end
rescue EOFError
end
or slurp the whole file with IO.readline(path)
On Jul 25, 10:02 am, “Luis P.” [email protected] wrote:
loop do
line = f.readline
# parse
end
rescue EOFError
end
or slurp the whole file with IO.readline(path)
–
Luis P.http://ktulu.com.ar/blog/
Thanks for the responses Luis. I think I need to read a little more
about errors and exceptions in Ruby before I use your examples.
Thanks,
The SketchUp Artist