如何避免写入文件末尾的换行符

时间:2013-09-08 19:51:33

标签: file tcl

在tcl中是否有办法避免在写入文件的末尾使用换行符?

puts $file $line

感谢。

4 个答案:

答案 0 :(得分:6)

首先,除非您还指定了puts选项,否则-nonewline始终会写入您提供的最后一个参数,后跟换行符。

在循环中编写行时,您不希望在最后一行的末尾有换行符,您实际上是使用\n作为行分隔符而不是一行终结者。要在不在单个字符串中构建所有数据的情况下执行此操作,最简单的方法是使用额外的变量来保存分隔符并使其开始为空。

# Initially
set separator ""
# Inside the loop
puts -nonewline $file $separator$line
set separator "\n"

将(希望是本地的)变量设置为常量值是每次迭代需要做的少量额外工作,并且很容易确保这样做是正确的。

(当然,如果你真的在写一个文件,你也可以在循环之后使用seekchan truncate来修补补丁。虽然这很难做到 - “newline”isn' t始终写为单个字节,具体取决于fconfigure -translation选项 - 并且根本不适用于非文件通道。在这种情况下不推荐!)

答案 1 :(得分:4)

如果你已经拥有内存中的所有行:

puts -nonewline $file [join $lines \n]

答案 2 :(得分:1)

也许:

puts -nonewline $file $line

答案 3 :(得分:0)

这是怎么回事?

puts -nonewline $file "\n$line"