【发布时间】:2014-02-14 15:58:12
【问题描述】:
如何从文件的开头(第一行)读取 ruby 中的文本文件?
例如这段代码:
while line = file.gets
[code here]
end
从第一行读取到最后一行并停止。
但是,我想从第一行重新开始,一直扫描到最后一行。
有什么办法吗?
谢谢。
【问题讨论】:
-
您想无限读取文件吗?
-
啊,谢谢你的回答
标签: ruby
如何从文件的开头(第一行)读取 ruby 中的文本文件?
例如这段代码:
while line = file.gets
[code here]
end
从第一行读取到最后一行并停止。
但是,我想从第一行重新开始,一直扫描到最后一行。
有什么办法吗?
谢谢。
【问题讨论】:
标签: ruby
您编写的代码在 Ruby 编程中非常不寻常,大多数情况下,文件是使用Enumerable 方法逐行读取的,例如:
file.each { |line| [code here] }
也就是说您可以使用Enumerable#cycle 方法多次读取文件。给定以下文件,比如foo.txt:
foo
bar
您可以使用以下代码阅读两次:
open('foo.txt') do |file|
file.cycle(2) { |line| puts line }
end
# Output:
#
# foo
# bar
# foo
# bar
如果你将nil 传递给cycle,或者没有参数,它将永远读取文件。
【讨论】:
使用file.rewind 将其还原到开头。
【讨论】: