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版
Dec 07 Python
跟老齐学Python之有点简约的元组
Sep 24 Python
Python 访问限制 private public的详细介绍
Oct 16 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
Python3爬楼梯算法示例
Mar 04 Python
python制作简单五子棋游戏
Jun 18 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
Django框架表单操作实例分析
Nov 04 Python
Python多线程获取返回值代码实例
Feb 17 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
python生成word合同的实例方法
Jan 12 Python
Python实现抖音热搜定时爬取功能
Mar 16 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
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
js DataSet数据源处理代码
2010/03/29 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
Python 装饰器使用详解
2017/07/29 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
详解Anaconda 的安装教程
2020/09/23 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
银行求职信
2014/05/31 职场文书
书法大赛策划方案
2014/06/04 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
产品委托授权书范本
2014/09/16 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书