网络编程
位置:首页>> 网络编程>> Python编程>> python文件特定行插入和替换实例详解

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

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

标签:python,文件插入,替换

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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com