在TCL中向文件写入多行

在TCL中向文件写入多行,tcl,Tcl,我希望修改gpsfeed+,添加一个部分,在模拟器运行时将导航字符串写入文本文件。这个工具是用tcl编写的,我不知道我需要做什么。到目前为止,我得到的是: if {$prefs(udp) & $::udpOn} { # opens file to write strings to set fp [open "input_NAV.txt" w+] # one sentence per udp packet foreach line [split $::out

我希望修改gpsfeed+,添加一个部分,在模拟器运行时将导航字符串写入文本文件。这个工具是用tcl编写的,我不知道我需要做什么。到目前为止,我得到的是:

if {$prefs(udp) & $::udpOn} {
    # opens file to write strings to
    set fp [open "input_NAV.txt" w+]
    # one sentence per udp packet
    foreach line [split $::out \n] {    
    puts $fp $line
    }
    close $fp
}

现在,如果UDP广播被打开,我想通过UDP接收每个导航字符串广播,并将其写入一个文件。但是上面的代码只写入其中的1个字符串,然后覆盖该字符串。我一直在尝试添加a/n开关,但没有任何乐趣。

我使用了错误的模式打开文件: 打开文件进行读写。如果存在,则截断它。如果不存在,请创建一个新文件

我本应使用以下任一项:

a仅打开文件进行写入。如果文件不存在,请创建一个新的空文件。在每次写入之前,将文件指针设置为文件的结尾


a+打开文件进行读写。如果文件不存在,请创建一个新的空文件。将初始访问位置设置为文件的结尾。

我使用了错误的模式打开文件: 打开文件进行读写。如果存在,则截断它。如果不存在,请创建一个新文件

我本应使用以下任一项:

a仅打开文件进行写入。如果文件不存在,请创建新的空文件。在每次写入之前,将文件指针设置为文件的结尾


a+打开文件进行读写。如果文件不存在,请创建一个新的空文件。将初始访问位置设置为文件的结尾。

这可能是一条注释,但格式不同

此代码:

foreach line [split $::out \n] {    
puts $fp $line
}
相当于:

puts $fp $::out

这将是一个注释,但格式不同

此代码:

foreach line [split $::out \n] {    
puts $fp $line
}
相当于:

puts $fp $::out

r+
也可能是合适的
a+
在编写时具有(近似)仅附加语义。
r+
可能也适用<代码>a+在编写时具有(近似)仅附加语义。