牛骨文教育服务平台(让学习变的简单)
博文笔记

python在指定行前插入一行

创建时间:2015-11-04 投稿人: 浏览次数:168

以下脚本为,把/tmp/test.txt 的"the first line"前插入一行"the second line"

#!/usr/bin/env python

import os
import sys
import fileinput

class Insert_line(object):

    def __init__(self, file, keyword, newline):
        self.__file = file
        self.__key = keyword
        self.__newline = newline

    def _get_specify_lineno(self):
        i = 1
        try:
            f = open("%s" % self.__file)
        except IOError,e:
            print e[1] + " "%s"" % e.filename
            sys.exit(1)
        while True:
            line = f.readline()
            if not line: break
            if "%s" % self.__key in line:
                return i
                break
            i += 1
        f.close()

    def _inserted_newline_list(self):
        if self._get_specify_lineno():
            ls = os.linesep
            f = open("%s" % self.__file)
            li = f.readlines()
            f.close()
            li.insert(self._get_specify_lineno() - 1, self.__newline + ls )
            return li

    def inserted_new_file(self):
        if self._inserted_newline_list():
            lines = self._inserted_newline_list()
            os.system("cp %s %s.bak" % (self.__file, self.__file))
            f = open("%s" % self.__file, "w")
            f.writelines(lines)
            f.close()
        else:
            print "No such keyword "%s"" % self.__key

def _main():
    file = Insert_line("/tmp/test.txt", "the first line", "the second line")
    file.inserted_new_file()

if __name__ == "__main__":
    _main()


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。