python中的truncate()神坑

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,写入新文件的位置依然是从原来文件的指针位置(末位)开始。如果这个文件是用来存储一些初始化数据,这样的操作将会给你带来极大的困扰,将会得到意想不到的效果。
notepad++显示为null
正确操作为:read()后,依然seek(0),再来truncate()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值