【问题标题】:Ruby continuously reading from beginning of fileRuby 从文件开头连续读取
【发布时间】:2014-02-14 15:58:12
【问题描述】:

如何从文件的开头(第一行)读取 ruby​​ 中的文本文件?

例如这段代码:

while line = file.gets
[code here]
end

从第一行读取到最后一行并停止。

但是,我想从第一行重新开始,一直扫描到最后一行。

有什么办法吗?

谢谢。

【问题讨论】:

  • 您想无限读取文件吗?
  • 啊,谢谢你的回答

标签: ruby


【解决方案1】:

您编写的代码在 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,或者没有参数,它将永远读取文件。

【讨论】:

  • Ruby 似乎有一些方法可以完成任何一件想做的事情。我总是在寻找新的。
【解决方案2】:

使用file.rewind 将其还原到开头。

【讨论】:

  • 道歉@sawa,我删除了我的评论。
  • @mbratch 谢谢。我不是特别难受。我只是不想让人们认为我抄袭了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2015-07-21
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 2014-01-29
相关资源
最近更新 更多