如何在 tcl 中创建具有给定名称和内容的文件?
How to create a file with given name and contents in tcl?
以下的 tcl 等价物是什么?
cat <<EOF > example/file.txt
example
file
contents
EOF
我目前拥有的:
set outfile [open "example/file.txt" w]
try {
puts $outfile "example
file
contents"
} finally {
close $outfile
}
我不喜欢的:
- 打开、设置、try/finally、放置、关闭 - 树木太多,森林无法隐藏
- 内容的第一行必须采用奇怪的格式,否则我会在文件开头得到一个额外的空行
#2 的答案是 string trim
set contents {
example
file
contents
}
puts $outfile [string trim $contents]
处理“复杂性”的方法是将代码放在过程中。那你可以忽略复杂性。
proc writefile {filename contents} {
set outfile [open $filename w]
try {
puts $outfile $contents
} finally {
close $outfile
}
}
writefile example/file.txt "example
file
contents"
如果你愿意,你可以在写入之前添加适当的 trim 内容(Tcl 不会 trim 东西,除非你要求它)。
proc writefile {filename contents} {
set outfile [open $filename w]
try {
puts $outfile [string trim $contents "\n"]
} finally {
close $outfile
}
}
writefile example/file.txt "
example
file
contents
"
如果您想要更复杂的 trimming(或其他处理)规则,将它们放在过程中意味着您不必用它们弄乱其余代码。但是可能的规则范围非常;你很快就会完全 application-specific 东西。
以下的 tcl 等价物是什么?
cat <<EOF > example/file.txt
example
file
contents
EOF
我目前拥有的:
set outfile [open "example/file.txt" w]
try {
puts $outfile "example
file
contents"
} finally {
close $outfile
}
我不喜欢的:
- 打开、设置、try/finally、放置、关闭 - 树木太多,森林无法隐藏
- 内容的第一行必须采用奇怪的格式,否则我会在文件开头得到一个额外的空行
#2 的答案是 string trim
set contents {
example
file
contents
}
puts $outfile [string trim $contents]
处理“复杂性”的方法是将代码放在过程中。那你可以忽略复杂性。
proc writefile {filename contents} {
set outfile [open $filename w]
try {
puts $outfile $contents
} finally {
close $outfile
}
}
writefile example/file.txt "example
file
contents"
如果你愿意,你可以在写入之前添加适当的 trim 内容(Tcl 不会 trim 东西,除非你要求它)。
proc writefile {filename contents} {
set outfile [open $filename w]
try {
puts $outfile [string trim $contents "\n"]
} finally {
close $outfile
}
}
writefile example/file.txt "
example
file
contents
"
如果您想要更复杂的 trimming(或其他处理)规则,将它们放在过程中意味着您不必用它们弄乱其余代码。但是可能的规则范围非常;你很快就会完全 application-specific 东西。