Увеличьте ID ВЕРСИИ на единицу и запишите в файл .mk - PullRequest
0 голосов
/ 07 января 2010

У меня есть код для чтения в номере версии из файла 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.mk с переменной VERSION_ID.

Спасибо

Я пробовал то же самое утверждение с 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("."))

Я знаю, что это мусор, я просто не могу найти, что делать здесь, в онлайн-документах.

Я также попробовал модуль рассола безрезультатно. Может быть, я смогу написать маринованный список вместо этого, а затем распаковать его. Или я думал, что смогу просто написать всю строку целиком.

Я пытался использовать другой подход, я пытался получить список для ввода в виде строки. Я пробовал это, но я не уверен, будет ли это работать.

for x in VERSION_ID:
    "VERSION_ID={0}.{1}.{2}.format(x)

1 Ответ

2 голосов
/ 07 января 2010

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...