在循环遍历ruby中的数据之前获取行数

时间:2011-06-28 03:03:57

标签: ruby

在循环遍历IO对象中的每一行之前,我需要获取IO对象包含的总行数。我怎么能用红宝石做到这一点?

4 个答案:

答案 0 :(得分:3)

你不能真的,除非你想要发送到wc并解析结果 - 否则你需要做两次通过 - 一次获得行号,另一次来做你的实际工作。

(假设我们正在讨论File IO实例 - 这些方法都不适用于网络套接字等)

答案 1 :(得分:1)

在rails中

(唯一的区别是我如何生成文件对象实例)

file = File.open(File.join(Rails.root, 'lib', 'assets', 'file.json'))
linecount = file.readlines.size

答案 2 :(得分:0)

io.lines.count会给你一些行数。

io.lines.each_with_index {|line, index|}会给你每一行和它的行号(从0开始)。

但我不知道是否可以在不读取文件的情况下计算行数。

您可能想要阅读文件,然后使用io.rewind再次阅读。

答案 3 :(得分:0)

如果您的文件不是很大,请将其粘贴到内存(数组)中并计算项目数(即行数)。