看起来这段代码应该有用......
set data "sample text"
set file_name "C:\Test2.txt"
set file_obj [open $file_name w]
puts -nonewline $file_obj $data
close $file_obj
但我的任何一个系统都没有创建文件。
set file_name "C:\Test2.txt"
file exists $file_name
当文件不存在时,返回1(true)。混乱。
答案 0 :(得分:3)
该文件可能是创建的,不是在C:的根目录中,而是在当前目录中。你看,Tcl解释器在双引号字符串中处理反斜杠的方式是将它和后面的字符转换为特殊字符(例如\t
,它将转换为制表符,并{{1} },成为换行符)。当解释器查看字符串\n
时,它会找到组合"C:\Test2.txt"
,它不是有效的转义码,因此它将字符串计算为\T
,这是一个合法的文件Windows中的名称,表示当前C:。目录中的"C:Test2.txt"
。
解决方案是在文件名中使用Unix风格的常规斜杠,例如Test2.txt
。