我对我在Tcl / tk的工作有疑问 它转到名为sPnflds的第二行变量。 将新值分配给变量sPn和sTitlePdf。 其他行将起作用。 此过程将继续,直到完全读取所有sPflds变量行。 (此过程将对整个sPflds列重复)
set f [open "c:/temp/labels.txt" r]
set contents [encoding convertto utf-8 [read $f]]
close $f
set labels [split $contents \n]
#puts $labels
#start of loop for first line (in labels variable)
set sPnflds [split $labels ","]
set sPn [lindex $sPnflds 0]
set sTitlePdf [lindex $sPnflds 1]
puts $sTitlePdf
puts $sPn
答案 0 :(得分:0)
我觉得你的问题很难理解。您必须显示一些数据。
我假设您要迭代文件的行(您的代码中实际上没有循环)。
我假设每行上有2个以逗号分隔的字段,你想要捕获到这些变量中。
这样的事情:
% exec cat labels.txt
1,hello
2,world
3,foo
4,bar
% set f [open labels.txt]
file5
% set contents [encoding convertto utf-8 [read -nonewline $f]]
1,hello
2,world
3,foo
4,bar
% close $f
% set labels [split $contents \n]
1,hello 2,world 3,foo 4,bar
% foreach row $labels {
lassign [split $row ,] sPn sTitlePdf
puts "<$sPn> <$sTitlePdf>"
}
<1> <hello>
<2> <world>
<3> <foo>
<4> <bar>
你会注意到我添加了-nonewline
选项来阅读。
set data [read $filehandle]
set lines [split $data \n]
是你得到一个空行作为lines
列表的最后一个元素。默认情况下,read
命令会为您提供带有尾随换行符的数据。迭代文件行的首选方法是:
set f [open filename]
while {[gets $f line] != -1} {
do something with $line
}
close $f
假设文件内容适合内存,它会慢一些。