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正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
python 默认参数问题的陷阱
Feb 29 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
详解python执行shell脚本创建用户及相关操作
Apr 11 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
Python将string转换到float的实例方法
Jul 29 Python
python matplotlib拟合直线的实现
Nov 19 Python
TensorFlow实现自定义Op方式
Feb 04 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 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/12/02 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
javascript中创建对象的几种方法总结
2013/11/01 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
Python模拟用户登录验证
2017/09/11 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
农民工工资承诺书范文
2014/03/31 职场文书
货款欠条范本
2015/07/03 职场文书
运动员代表致辞
2015/07/29 职场文书
2016中秋节问候语
2015/11/11 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS