gpt4 book ai didi

ruby - 解析文件时如何找到完成百分比?

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:46 24 4
gpt4 key购买 nike

如何打印我已经解析的文件的百分比。我正在解析一个文本文件,所以我使用:

file.each_line do

是否有类似 each_with_index 的方法可用于字符串?

这就是我目前使用 each_with_index 查找完成百分比的方式:

amount = 10000000
file.each_with_index do |line, index|
if index == amount
break
end
print "%.1f%% done" % (index/(amount * 1.0) * 100)
print "\r"

最佳答案

要获得行数,您可以做几件不同的事情。

如果您使用的是 Linux 或 Mac 操作系统,请利用底层操作系统并询问文件中有多少行:

lines_in_file = `wc -l #{ path_to_file_to_read }`

wc 速度极快,可以告诉您有关行、单词和字符的信息。 -l 指定行。

如果你想在 Ruby 中做到这一点,你可以使用 File.readlines('/path/to/file/to/read') File.read('/path/to/file/to/read').lines,但是要非常小心。两者都会将整个文件读入内存,而且,如果该文件大于您的可用 RAM,那么您的机器就会慢慢死掉。所以,不要那样做。

而是使用类似的东西:

lines_in_file = 0
File.foreach('/path/to/file/to/read') { lines_in_file += 1 }

运行后,lines_in_file 将保存文件中的行数。 File.foreach 非常快,几乎等同于使用 File.readlines 并且可能比 File.read().lines 更快,而且它一次只读取一行,因此您不会填满 RAM。

如果你想知道你刚刚从文件中读取的行的当前行号,你可以使用 Ruby 的 $.

不过,您担心的是“文件的百分比”。一个潜在的问题是行是可变长度的。根据您对它们的处理方式,线长可能会对您的进度表产生很大影响。您可能想要查看文件的实际长度并跟踪阅读每一行所消耗的字符数,因此您的进度基于字符的百分比,而不是行的百分比。

关于ruby - 解析文件时如何找到完成百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16089235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com