利用Python在一个文件的头部插入数据的实例


Posted in Python onMay 02, 2018

在一个文件的末尾追加数据是很常用的。在使用过程中应该都比较熟悉不会出现什么错误。但是往一个文件头部插入数据可能或多或少会碰到一些问题。

看似正确的错误代码

很多代码看似正确,但是其实都是错的。一起来看下这些代码

1、看似正确的错误代码1

with open(path, "r+") as f:
   f.seek(0)
   f.write(data)

确实是从头写了,而且有些原有数据确实在,但是数据有问题。。。。

因为”r+”方式写文件操作没有插入的语义,只有写文件的含义,原来位置如果有数据,不会后移的,是覆盖掉了。。。。所以,你可能会看到一些老的数据。不仔细辨别可能就天真地以为成功了。。。

2、看似正确的错误代码2

with open(path, "w+") as f:
   old = f.read()
   f.seek(0)
   f.write(data)
   f.write(old)

你读取到的数据永远为空。。。。

因为”w+”的含义就是截取长度为0然后写入文件。

3、看似正确的错误代码3

with open(path, "a+") as f:
   old = f.read()
   #f.truncate(0)      #取消掉注释成正确代码
   f.seek(0)
   f.write(data)

写入的数据永远出现在文件末尾。。。。。

要打破魔咒的话要先将文件截断成0字节。。。。

snack:想要”a+”的效果变”r+”,在读之前先seek(0),在写之前要truncate一下,确保要写入的位置是文件的末尾。

正确的代码

with open(path, "r+") as f:
   old = f.read()
   f.seek(0)
   f.write(data)
   f.write(old)

原理思路:读出原有文件内容,移动索引到开始,写入新的数据,然后写入旧的数据。

以上这篇利用Python在一个文件的头部插入数据的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跨平台python异步回调机制实现和使用方法
Nov 26 Python
Python与Redis的连接教程
Apr 22 Python
Python中强大的命令行库click入门教程
Dec 26 Python
Python语言生成水仙花数代码示例
Dec 18 Python
ubuntu17.4下为python和python3装上pip的方法
Jun 12 Python
Python for循环生成列表的实例
Jun 15 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
python中的逆序遍历实例
Dec 25 Python
Python换行与不换行的输出实例
Feb 19 Python
python在文本开头插入一行的实例
May 02 #Python
Python实现的根据文件名查找数据文件功能示例
May 02 #Python
对Python3中的print函数以及与python2的对比分析
May 02 #Python
python print 按逗号或空格分隔的方法
May 02 #Python
Django 跨域请求处理的示例代码
May 02 #Python
python 按照固定长度分割字符串的方法小结
Apr 30 #Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 #Python
You might like
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
Promise扫盲贴
2019/06/24 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
小学开学寄语
2014/01/19 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
公司联欢会策划方案
2014/05/19 职场文书
离婚协议书范文2015
2015/01/26 职场文书
民事申诉状范本
2015/05/20 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA