Kev*_*vin 0 permissions file-io file tcl
我在删除文本文件的内容时遇到了一些麻烦.据我所知,由于我们使用的PLM软件的权限问题,我似乎无法重命名或删除此文件并创建一个具有相同名称的新文件.不幸的是,我独自一人,因为似乎没有人知道到底出了什么问题.
但是,我可以读写这个文件.所以我一直在寻找seek命令并做这样的事情:
set f [open "C:/John/myFile.txt" "a+"]
seek $f 0
set fp [tell $f]
seek $f 0 end
set end [tell $f]
# Restore current file pointer
seek $f $fp
while { $fp < $end } {
puts -nonewline $f " "
incr fp
}
close $f
Run Code Online (Sandbox Code Playgroud)
这似乎用空格替换所有行,但我不确定这是解决这个问题的正确方法.有人可以给我一些指示吗?我还是比较新的Tcl.
谢谢!
如果你至少得到了Tcl 8.5,请打开文件r+或w+模式(可能需要实验),然后使用chan truncate:
chan truncate $f 0
Run Code Online (Sandbox Code Playgroud)
如果您使用的是8.4或之前,则需要执行此操作(并且它仅适用于截断为空):
close [open $thefilename "w"]
Run Code Online (Sandbox Code Playgroud)
(w如果文件不存在,则模式创建文件,如果文件不存在则将其截断为空.文件的其余部分可能会也可能不会这样!)
但请注意,这不会重置文件上打开的其他通道认为它们的位置.即使没有锁定,这也可能导致奇怪的效果(例如以大偏移量写入,操作系统用零填充前面的字节).
| 归档时间: |
|
| 查看次数: |
4914 次 |
| 最近记录: |