将所有数据保存到变量 tcl

Save all data into variable tcl

我有一个代码,我想用它来打开一个日志文件,提取内容并将其保存到一个变量中,这样我以后就可以从变量中提取数据了。我怎么做?到目前为止,代码仅将日志文件的最后数据保存到变量中。我认为 while 循环逐行抓取数据,变量逐行存储它并随着它的进行覆盖以前的数据,我如何更改代码以便它随着代码的进行存储所有数据?

set fp [open "filename.log" r]
while { [gets $fp data] >= 0 } { 
    set written $data
}
close $fp 
puts $written

请帮忙

您可以使用 append 命令来实现:

set written ""
set fp [open "filename.log" r]
while { [gets $fp data] >= 0 } { 
    # append last data read
    append written $data
    # add some line feed for readability (may not be necessary)
    append written "\n"
}
close $fp 
puts $written

您不妨使用 read 而不是使用 whilegets:

set fp [open "filename.log" r]
set written [read $fp]
close $fp 
puts $written

经过@purplepsycho 和@Jerry 的正确回答,您可以使用 fileutil::cat 函数,它甚至不需要 openclose 文件描述符和语法,

package require fileutil
set var [fileutil::cat "filename.log"]
puts $var