2010-01-07 7 views
0

J'ai un code à lire dans le numéro de version d'un fichier make.Incrémenter un ID VERSION par un et écrire dans le fichier .mk

VERSION_ID=map(int,re.match("VERSION_ID\s*=\s*(\S+)",open("version.mk").read()).group(1).split(".")) 

Ce code prend VERSION_ID = 0.0.2 et stocke comme [0, 0, 2].

Y a-t-il un moyen d'incrémenter ce nombre de un et d'écrire le nouveau numéro de version dans le fichier version.mk avec la variable VERSION_ID.

Merci

J'ai essayé la même déclaration avec write() au lieu de lecture() mais je reçois une erreur disant que je ne peux pas écrire une liste. J'ai également essayé de l'écrire comme une chaîne, mais je reçois un mauvais message de descripteur de fichier.

s = str(VERSION_ID) 

VERSION_ID=map(int,re.search("VERSION_ID\s*=\s*(\S+)",open("version.mk").write(s)).group(1).split(".")) 

Je sais que ce sont des bêtises, je ne peux pas sembler trouver quoi faire dans la documentation en ligne.

J'ai également essayé le module de décapage en vain. Peut-être que je serais en mesure d'écrire une liste au vinaigre à la place, puis décoller. Ou je pensais que je pourrais simplement écrire toute la ligne tout à fait.

J'ai essayé de faire une autre approche, j'ai essayé d'obtenir une liste à saisir comme une chaîne. J'ai essayé ceci mais je ne suis pas sûr que cela fonctionnera.

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

Ahhh .... Envoyez à "pleaseDoMyWorkForMe.com". Ils aiment ce genre de questions. –

+0

Il y a plusieurs façons, quels sont les problèmes spécifiques que vous avez? Qu'avez-vous essayé qui n'a pas fonctionné pour vous? –

+0

@ S.Lott, je n'essaie pas de faire mon travail pour moi, j'ai essayé de lire les réponses moi-même et je ne peux pas les trouver. Je commence à apprendre Python et la programmation à un certain niveau. Quand j'apprends à programmer en python, je ne vais pas poser autant de questions stupides. Si vous n'avez rien de constructif à dire, veuillez ne rien dire du tout. – chrissygormley

Répondre

2

perhpas quelque chose comme ça (vous devriez également vérifier les erreurs et que)

#! /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() 
+0

Merci, Génie, ça fonctionne parfaitement, je ne sais pas ce que j'étais. – chrissygormley

Questions connexes