我在迭代文件的行时遇到一些问题,似乎每个文件只能使用一次each_line方法
file = open_file(path)
file.each_line { puts "Q"}
puts "--"
file.each_line { puts "Q"}
puts "--"
file.each_line { puts "Q"}
puts "--"
file.each_line { puts "Q"}
#Output: (on a file with three lines in it )
#Q
#Q
#Q
#--
#--
#--
使用常规迭代器
可以正常工作3.times { puts "Q"}
puts "--"
3.times { puts "Q"}
puts "--"
3.times { puts "Q"}
puts "--"
3.times { puts "Q"}
#Output: (on a file with three lines in it )
#Q
#Q
#Q
#--
#Q
#Q
#Q
#--
#Q
#Q
#Q
#--
#Q
#Q
#Q
我有什么遗失
答案 0 :(得分:6)
您必须使用file#seek
重置文件的阅读位置试试这个
file.each_line &method(:puts)
file.seek 0
file.each_line &method(:puts)
根据评论,以下内容也适用
file.each_line &method(:puts)
file.rewind
file.each_line &method(:puts)
Dummie内容
# users.json
[
{"name": "bob"},
{"name": "alice"}
]
红宝石
# output.rb
file = File.open("users.json")
file.each_line &method(:puts)
#=> [
#=> {"name": "bob"},
#=> {"name": "alice"}
#=> ]
file.seek 0
#=> 0
file.each_line &method(:puts)
#=> [
#=> {"name": "bob"},
#=> {"name": "alice"}
#=> ]