首页 > 学院 > 开发设计 > 正文

【弱鸡的痛】文件打开方式的区别

2019-11-08 01:08:32
字体:
来源:转载
供稿:网友

本文仅用于个人记录,没有任何学习的价值

很多语言中会以诸如”w”、”r”、”a”、”w+”等方式区分文件打开模式

初学时在C语言中并没有仔细理解他们之间的异同点,而且居然隔了这么久才踩到这方面的坑,或许确实是自己代码写的不够多吧。

最近在用Python写一个下载器,本以为断点续传很容易实现,但自己在这个点上卡死了很久,表现出来的问题就是:一次性文件下载完成时表现正常,但中间只要有中断并续传后,文件最终会有损坏。

本以为是下载进度序列化和反序列化过程中出现了问题,在这方面排查许久,但一直无所收获。

无意中发现,自己使用的文件打开方式是”ab”。

本以为可以通过seek的办法实现随机写入,但事实上使用”a”、”ab”、”a+”或者”ab+”的方法打开的文件,文件指针会被定位到文件末尾,且随后使用seek方法也无法移动向前移动,只可向后移动。

后使用”w+”,本以为既然是“读写”方式打开,应该不会清空文件内容,但实际上打开时却会清空文件。

最后实现:

判断下载器临时文件是否存在,如果存在,使用”rb+”方式打开,否则使用”w+”方式创建并打开。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表