如何使用tcl逐行读取大文件?

paw*_*yan 5 file tcl

我使用while循环编写了一段代码,但是逐行读取文件需要花费太多时间.有人能帮帮我吗?我的代码:

   set a [open myfile r]              
   while {[gets $a line]>=0} {   
     "do somethig by using the line variable" 
   }
Run Code Online (Sandbox Code Playgroud)

Don*_*ows 8

代码看起来很好.它非常快(如果您使用的是足够新版本的Tcl;从历史上看,有一些TLC的小版本存在缓冲管理问题),并且您是一次读取一行的方式.

如果你可以一次读取更大的数量,它会快一点,但是你需要有足够的内存来保存文件.把它放在上下文中,几百万行的文件通常没问题; 现代计算机可以很好地处理这类事情:

set a [open myfile]
set lines [split [read $a] "\n"]
close $a;                          # Saves a few bytes :-)
foreach line $lines {
    # do something with each line...
}
Run Code Online (Sandbox Code Playgroud)

  • 您还可以通过读取文件的固定大小块(例如,一次 1MB)来工作,但是您不是逐行工作,必须做很多工作来解决问题。我从未见过值得付出努力的情况。 (2认同)