Performance 在TCL中,我从尾部打开一个文件

Performance 在TCL中,我从尾部打开一个文件,performance,file,tcl,Performance,File,Tcl,我有这个问题: 我有时需要处理巨大的文本文件。 在某些情况下,我知道我关心的数据在文件的尾部。如果我使用普通打开,我需要滚动浏览这些行。有没有办法“从结尾开始”,节省时间,或者向后读取文件?您可以使用seek命令: set linesz 256 ; # assume an approximate line size set fh [open myfile.txt] seek $fh [expr {$linesz*-5}] end gets $fh line ; # this first line

我有这个问题:
我有时需要处理巨大的文本文件。

在某些情况下,我知道我关心的数据在文件的尾部。如果我使用普通打开,我需要滚动浏览这些行。有没有办法“从结尾开始”,节省时间,或者向后读取文件?

您可以使用
seek
命令:

set linesz 256 ; # assume an approximate line size
set fh [open myfile.txt]
seek $fh [expr {$linesz*-5}] end
gets $fh line ; # this first line is probably a partial line, ignore it.
while { [gets $fh line] >= 0 } {
   # process
}
close $fh

参考资料:

您可以使用
seek
命令:

set linesz 256 ; # assume an approximate line size
set fh [open myfile.txt]
seek $fh [expr {$linesz*-5}] end
gets $fh line ; # this first line is probably a partial line, ignore it.
while { [gets $fh line] >= 0 } {
   # process
}
close $fh

参考资料:

你所说的“滚动浏览”是什么意思?你的意思是使用鼠标/箭头键滚动还是逐行读取文件?查看命令。你说的“滚动”是什么意思?您的意思是使用鼠标/箭头键滚动还是逐行读取文件?请查看该命令。这种方法的唯一复杂之处在于猜测行长度和返回的行数(
-5
)。为它们获取好的值需要知道数据。如果数据行长度高度可变或数据知识稀疏,则需要增加行大小和/或要返回的行数。我认为无法以精确的方式实现这一点,即必须使用猜测。我也这么怀疑,只是想确定这种方法的唯一复杂之处是计算出对行长度的猜测,以及要返回的行数(
-5
)。为它们获取好的值需要知道数据。如果数据行长度高度可变或数据知识稀疏,则需要增加行大小和/或要返回的行数。我认为无法以精确的方式实现这一点,即必须使用猜测。我也这么怀疑,只是想确定一下