利用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在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
Python去除列表中重复元素的方法
Mar 20 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
浅析Git版本控制器使用
Dec 10 Python
Python断言assert的用法代码解析
Feb 03 Python
python文本数据相似度的度量
Mar 12 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
Python的UTC时间转换讲解
Feb 26 Python
python 一维二维插值实例
Apr 22 Python
next在python中返回迭代器的实例方法
Dec 15 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
Google韩国首页图标动画效果
2007/08/26 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
功能完善的小程序日历组件的实现
2020/03/31 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
python在指定目录下查找gif文件的方法
2015/05/04 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python分支结构(switch)操作简介
2018/01/17 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
python实现文本界面网络聊天室
2018/12/12 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Django配置文件代码说明
2019/12/04 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
Django websocket原理及功能实现代码
2020/11/14 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
建筑工地宣传标语
2014/06/18 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
Python中如何处理常见报错
2022/01/18 Python