假设我使用以下方式打开了一个文件:
set in [open "test.txt" r]
我打算在某一行修改一些字符串,例如:
style="fill:#ff00ff;fill-opacity:1"
这个行号是:20469
我想将值ff00ff
修改为其他字符串值,例如ff0000
。
这样做的正确方法是什么?提前谢谢!
答案 0 :(得分:0)
您需要以读写模式打开文件; r+
模式可能是合适的。
在大多数情况下,如果文件的长度达到合理的兆字节数,您可以read
将整个文件转换为字符串,使用regsub
之类的命令对其进行处理以执行内存更改,以及然后在seek
到文件的开头后写回整个事情。由于您没有更改文件的大小,因此效果很好。 (缩短文件需要明确截断。)
set f [open "test.txt" r+]
set data [read $f]
regsub {(style="fill:#)ff00ff(;fill-opacity:1)"} $data {\1ff0000\2} data
seek $f 0
puts -nonewline $f $data
# If you need it, add this here by uncommenting:
#chan truncate $f
close $f
还有其他方法可以替换;选择取决于你正在做什么的细节。