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

作者:ryanstd 时间:2022-05-01 11:16:27 

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。

来源:http://ryanstd.iteye.com/blog/480781

标签:python,文件插入,替换
0
投稿

猜你喜欢

  • Python super()方法原理详解

    2023-06-19 18:28:30
  • Python中的Selenium异常处理

    2021-08-28 04:15:23
  • SQLServer与服务器连接时出错的解决方案

    2009-06-28 14:35:00
  • 如何使用python3获取当前路径及os.path.dirname的使用

    2023-07-22 06:29:37
  • Python中的装饰器用法详解

    2022-02-09 04:03:33
  • 另外一种斜体的导航条

    2008-11-05 12:24:00
  • Python爬虫抓取技术的一些经验

    2021-06-09 12:02:23
  • 基于python实现matlab filter函数过程详解

    2023-06-04 04:54:55
  • PHP中定义数组常量(array常量)的方法

    2023-11-23 06:16:59
  • 网页设计详细教程之XML简便省力技巧五则

    2008-05-23 14:37:00
  • Python协程的用法和例子详解

    2022-02-15 14:01:57
  • OpenCV实现去除背景识别的方法总结

    2021-01-06 23:04:10
  • ASP:使用ImageMagickObject组件制作缩略图

    2008-10-21 12:21:00
  • 解析:轻松了解 MySQL中损坏的MyISAM表

    2009-02-23 17:30:00
  • 浅谈 Mousewheel 事件

    2010-08-16 12:37:00
  • Python标准库之Math,Random模块使用详解

    2021-02-09 22:33:13
  • 全文译稿 Windows Internet Explorer 8 性能优化白皮书

    2010-04-23 20:13:00
  • Python变量、数据类型、数据类型转换相关函数用法实例详解

    2021-03-29 08:30:35
  • 如何使用django的MTV开发模式返回一个网页

    2023-07-04 21:47:06
  • Python实现基于POS算法的区块链

    2023-10-30 01:47:19
  • asp之家 网络编程 m.aspxhome.com