アクセス引数に '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
「問題」を説明してください。コードから、あなたは 'TEST'だけを含むファイルで終わるように見えますが、それは正しいのですか? – Jerry
@Jerry yes youre right。ファイルにはTEST – ManInTheMiddle
Okしか含まれていません。すでに行に何かがある場合(この場合は28行目)、そこにあるものを置き換えたり、その行に追加したりしますか? – Jerry