在TCL中将多行写入文件

时间:2016-08-12 17:48:05

标签: tcl

我希望修改gpsfeed +以添加一个部分,该部分在模拟器运行时将NAV字符串写入文本文件。该工具是用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广播每个NAV字符串并将其写入文件。但上面的代码只写了1个字符串,然后覆盖了字符串。我一直试图添加一个/ n开关,但我没有任何快乐。

2 个答案:

答案 0 :(得分:2)

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

我应该使用以下任何一种方法:

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

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

答案 1 :(得分:1)

这是评论,但格式化。

此代码:

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

相当于:

puts $fp $::out