python文件特定行插入和替换实例详解


Posted in Python onJuly 12, 2017

python文件特定行插入和替换实例详解

python提供了read,write,但和很多语言类似似乎没有提供insert。当然真要提供的话,肯定是可以实现的,但可能引入insert会带来很多其他问题,比如在插入过程中crash掉可能会导致后面的内容没来得及写回。

不过用fileinput可以简单实现在特定行插入的需求:

Python代码 

import os 
import fileinput 
def file_insert(fname,linenos=[],strings=[]): 
  """ 
  Insert several strings to lines with linenos repectively. 
 
  The elements in linenos must be in increasing order and len(strings) 
  must be equal to or less than len(linenos). 
 
  The extra lines ( if len(linenos)> len(strings)) will be inserted 
  with blank line. 
  """ 
  if os.path.exists(fname): 
    lineno = 0 
    i = 0 
    for line in fileinput.input(fname,inplace=1): 
      # inplace must be set to 1 
      # it will redirect stdout to the input file 
      lineno += 1 
      line = line.strip() 
      if i<len(linenos) and linenos[i]==lineno: 
        if i>=len(strings): 
          print "\n",line 
        else: 
          print strings[i] 
          print line 
        i += 1 
      else: 
        print line 
file_insert('a.txt',[1,4,5],['insert1','insert4'])

 其中需要注意的是 fileinput.input的inplace必须要设为1,以便让stdout被重定向到输入文件里。

当然用fileinput.input可以不仅用来在某行插入,还可以在特定模式的行(比如以salary:结尾的行)插入或替换,实现一个小型的sed。

以上就是python文件特定行插入和替换的简单实例,如果大家有不明白或者好的建议请到留言区或者社区提问和交流,使用感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python中使用xlrd、xlwt操作excel表格详解
Jan 29 Python
Python上传package到Pypi(代码简单)
Feb 06 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
python爬取淘宝商品详情页数据
Feb 23 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
完美解决在oj中Python的循环输入问题
Jun 25 Python
Python静态类型检查新工具之pyright 使用指南
Apr 26 Python
Django框架模板的使用方法示例
May 25 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
一行Python代码过滤标点符号等特殊字符
Aug 12 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 #Python
python3之微信文章爬虫实例讲解
Jul 12 #Python
python脚本替换指定行实现步骤
Jul 11 #Python
Python书单 不将就
Jul 11 #Python
Python编写一个闹钟功能
Jul 11 #Python
python自定义异常实例详解
Jul 11 #Python
详解python中的文件与目录操作
Jul 11 #Python
You might like
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python读取网页内容的方法
2015/07/30 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
《七颗钻石》教学反思
2014/02/28 职场文书
邀请书模板
2015/02/02 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
手残删除python之后的补救方法
2021/06/26 Python
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js
element tree树形组件回显数据问题解决
2022/08/14 Javascript