文章目录
truncate()后的文件指针问题
文件以r+方式打开,read()后,指针默认到最后。
按照python truncate([size])定义,截取字符后,其余的都删掉。其中size是可选参数,是指从当前位置到size大小的字符截取下来,其余都删掉。
Python 文件 truncate() 方法用于截断文件并返回截断的字节长度。
指定长度的话,就从文件的开头开始截断指定长度,其余内容删除;不指定长度的话,就从文件开头开始截断到当前位置,其余内容删除。
好,正想这样,读取文件全部内容:data=open(filename).read()。然后将内容全部删掉,执行truncate(0)。执行完毕后,理所当然想到,删除文件全部内容后,然后写入新内容即可。
注意,这里有坑:
read()后,指针默认到最后。
执行truncate(0),python将原先内容删除,但是文件指针位置没有发生变化。文件中原来位置的内容,被真实的数字0替代也就是"\0",也就是0x00。在submile text 3中显示的就是0000,在notepad++中显示的是null,写入新文件的位置依然是从原来文件的指针位置(末位)开始。如果这个文件是用来存储一些初始化数据,这样的操作将会给你带来极大的困扰,将会得到意想不到的效果。
正确操作为:read()后,依然seek(0),再来truncate()