我有代码从make文件中读取版本号。
VERSION_ID=map(int,re.match("VERSION_ID\s*=\s*(\S+)",open("version.mk").read()).group(1).split("."))
此代码采用VERSION_ID = 0.0.2并将其存储为[0,0,2]。
有没有办法可以将这个数字增加一个,然后将新的版本号写入带有变量VERSION_ID的version.mk文件中。
由于
我用write()而不是read()尝试了相同的语句但是我收到一条错误,说我无法写一个列表。我也尝试将其写为字符串,但收到错误的文件描述符消息。
s = str(VERSION_ID)
VERSION_ID=map(int,re.search("VERSION_ID\s*=\s*(\S+)",open("version.mk").write(s)).group(1).split("."))
我知道这是垃圾,我似乎无法在网上的文档中找到该做什么。
我也试过泡菜模块无济于事。也许我可以写一个腌渍清单,然后取消它。或者我以为我可以完全写完整行。
我尝试过anther方法,我试图让列表作为字符串输入。我试过这个,但我不确定它是否会起作用。
for x in VERSION_ID:
"VERSION_ID={0}.{1}.{2}.format(x)
答案 0 :(得分:2)
perhpas这样的东西(你也应该检查错误和那个)
#! /usr/bin/python
import re
fn = "version.mk"
omk = open(fn).readlines()
nmk = open(fn, "w")
r = re.compile(r'(VERSION_ID\s*=\s*)(\S+)')
for l in omk:
m1 = r.match(l)
if m1:
VERSION_ID=map(int,m1.group(2).split("."))
VERSION_ID[2]+=1 # increment version
l = r.sub(r'\g<1>' + '.'.join(['%s' % (v) for v in VERSION_ID]), l)
nmk.write(l)
nmk.close()