我正在迭代一个大型文件目录:
Find.find('/some/path/to/directory/root') do |path|
# ...do stuff with files…
end
如果,例如500
?
Rails.env.development?
(或以其他方式突破)的好方法是什么?
我可以使用计数器,但是什么是“Ruby方式”?
答案 0 :(得分:2)
这是一种方式:
Find.find('/some/path/to/directory/root').first(500).each do |path|
# do something
end
答案 1 :(得分:1)
Find.find
枚举文件;换句话说,它想要遍历所有这些。您可以使用以下方法查找索引值:
Find.find(ENV['HOME']).with_index(1) do |path, i|
puts path
break if i > 10
end
puts 'done'
并使用它来跟踪您已处理的数量。
如果你想“全部做”:
limit = <some number>
do_em_all = (limit == 0)
Find.find(ENV['HOME']).with_index(1) do |path, i|
puts path
break unless (do_em_all || i <= limit)
end
puts 'done'
如果limit
为0
,您将处理所有内容。如果是> 0
,您将循环limit
次。
您还可以使用Dir.entries
或Dir.glob
,它会返回您可以根据需要分割的条目数组。
此时可枚举的each_slice
可能很有用。