我想在Textdocument中写一行,但是我的代码有问题,我不知道错误在哪里。
set fp [open C:/Users/user/Desktop/tst/settings.txt w]
set count 0
while {[gets $fp line]!=-1} {
incr count
if {$count==28} {
break
}
}
puts $fp "TEST"
close $fp
该文件仅包含TEST。
有人知道吗?
最佳答案
您正在使用“w”作为访问参数,它会截断文件。因此,您在打开文件时会丢失文件中的所有数据。阅读有关open命令的更多信息
您可以使用“r +”或“a +”。
另外,要在特定行之后写入,您可以将指针移动到所需位置。
set fp [open C:/Users/user/Desktop/tst/settings.txt r+]
set count 0
while {[gets $fp line]!=-1} {
incr count
if {$count==28} {
break
}
set offset [tell $fp]
}
seek $fp $offset
puts $fp "TEST"
close $fp
要替换一条完整的生产线,可以通过以下方式更轻松地完成。重写所有行并将新数据写入所需的行。
set fp [open C:/Users/user/Desktop/tst/settings.txt r+]
set count 0
set data [read $fp]
seek $fp 0
foreach line [split $data \n] {
incr count
if {$count==28} {
puts $fp "TEST"
} else {
puts $fp $line
}
}
close $fp
关于tcl - Tcl/Tk写在特定行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37805957/