将所有数据保存到变量 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
而不是使用 while
和 gets
:
set fp [open "filename.log" r]
set written [read $fp]
close $fp
puts $written
经过@purplepsycho 和@Jerry 的正确回答,您可以使用 fileutil::cat
函数,它甚至不需要 open
和 close
文件描述符和语法,
package require fileutil
set var [fileutil::cat "filename.log"]
puts $var
我有一个代码,我想用它来打开一个日志文件,提取内容并将其保存到一个变量中,这样我以后就可以从变量中提取数据了。我怎么做?到目前为止,代码仅将日志文件的最后数据保存到变量中。我认为 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
而不是使用 while
和 gets
:
set fp [open "filename.log" r]
set written [read $fp]
close $fp
puts $written
经过@purplepsycho 和@Jerry 的正确回答,您可以使用 fileutil::cat
函数,它甚至不需要 open
和 close
文件描述符和语法,
package require fileutil
set var [fileutil::cat "filename.log"]
puts $var