gpt4 book ai didi

windows - 从一个巨大的文本文件中读取最后 n 行

转载 作者:可可西里 更新时间:2023-11-01 13:18:36 26 4
gpt4 key购买 nike

我试过这样的

file_in <- file("myfile.log","r")
x <- readLines(file_in, n=-100)

但我还在等...

任何帮助将不胜感激

最佳答案

如果您知道日志有多少行,我会为此使用scan:

scan("foo.txt",sep="\n",what="char(0)",skip=100)

如果您不知道需要跳过多少个,那么您别无选择,只能朝其中一个方向移动

  • 阅读所有内容并获取最后 n 行(如果可行的话),
  • 使用 scan("foo.txt",sep="\n",what=list(NULL)) 计算出有多少条记录,或者
  • 使用某种算法遍历文件,每次只保留最后 n 行

最后一个选项可能是这样的:

ReadLastLines <- function(x,n,...){    
con <- file(x)
open(con)
out <- scan(con,n,what="char(0)",sep="\n",quiet=TRUE,...)

while(TRUE){
tmp <- scan(con,1,what="char(0)",sep="\n",quiet=TRUE)
if(length(tmp)==0) {close(con) ; break }
out <- c(out[-1],tmp)
}
out
}

允许:

ReadLastLines("foo.txt",100)

ReadLastLines("foo.txt",100,skip=1e+7)

如果您知道您有超过 1000 万行。当您开始拥有非常大的日志时,这可以节省阅读时间。


编辑:事实上,鉴于您的文件大小,我什至不会为此使用 R。在 Unix 上,您可以使用 tail命令。在工具包的某个地方也有一个 Windows 版本。不过我还没有尝试过。

关于windows - 从一个巨大的文本文件中读取最后 n 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596107/

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