利用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爬虫之urllib2使用指南
Nov 05 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
Python中的choice()方法使用详解
May 15 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
python验证码识别实例代码
Feb 03 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
python datetime中strptime用法详解
Aug 29 Python
用Python制作音乐海报
Jan 26 Python
解决Pycharm 运行后没有输出的问题
Feb 05 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
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
phalcon框架使用指南
2016/02/23 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
新闻内页-JS分页
2006/06/07 Javascript
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
详解Python中类的定义与使用
2017/04/11 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
python 实现按对象传值
2019/12/26 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
暑假实习求职信范文
2013/09/22 职场文书
函授本科自我鉴定
2013/11/03 职场文书
群众路线调研报告范文
2014/11/03 职场文书
上班迟到检讨书
2015/05/06 职场文书