在python中更新文件的多行

时间:2018-07-19 05:53:29

标签: python python-3.x

我正在用python编写自动化脚本以更新文件中的某些版本。 这是该文件的摘录。

if "$(CURTARGET)" == "linux_rh_el6_x86_64_32"
        /* See $VOB/FMSrules.mk */
        GOLDEN_CPPHDR_VER=4.4.7
        GOLDEN_CPPBKW_VER=3.4.6
        GOLDEN_LIBHDR_VER=$(GOLDEN_CPPHDR_VER)
        RHEL_KERNEL=2.6.32-696.16.1.el6.x86_64
    end
    if "$(CURTARGET)" == "linux_rh_el7_x86_64_32"
        /* See $VOB/FMSrules.mk */
        GOLDEN_CPPHDR_VER=4.8.5
        GOLDEN_CPPHDR_VER=4.4.7
        GOLDEN_LIBHDR_VER=$(GOLDEN_CPPHDR_VER)
        RHEL_KERNEL=3.10.0-693.el7.x86_64
    end

我必须根据$(CURTARGET)的值更新GOLDEN_CPPHDR_VER,GOLDEN_CPPHDR_VER和RHEL_KERNEL。

您会看到3个变量GOLDEN_CPPHDR_VER,GOLDEN_CPPHDR_VER和RHEL_KERNEL不是唯一的,我无法直接搜索和更新它们。

我尝试用这种方式进行编码。

def update_fmsrules():

    print " \n\n--- Updating FMSrules.mk ----\n"
    f = open(FMSrules_file,'r')
    lines = []
    while True:
        try:
            line= f.readline()
            #print line
            if (re.search(r'\blinux_rh_el7_x86_64_32\b',line)):
                print "matched\n"
                nextline = f.next()
                print nextline
                if "GOLDEN_CPPHDR_VER" in nextline:
                    print "entered if"
                    print line +"\ntrue\n"+ nextline
                    print f.tell()
                    break

        except StopIteration:
                    print "exception"
            return


    f.close()

但是它没有按预期工作。

print "matched\n"

我看到了上面的输出。

nextline = f.next()
print nextline

但是上面一行不是打印实际的下一行,而是一些垃圾行。 并且代码无限运行。

使用python做到这一点的最佳方法是什么?

如何使用python中的文件操作来做到这一点?

0 个答案:

没有答案