我正在用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中的文件操作来做到这一点?