我正在尝试对 CVS 中的文件进行版本号更新。
我最初的逻辑是更新一个浮点数(1.1 --> 1.2 --> 1.3),它工作得很好,直到我到达 1.9,然后它更新到 2.0。
我正在尝试使用此逻辑更新到 1.10,但是当我尝试增加 1.x 中的 x (ver[1] += 1) 时,它会抛出错误。
def replace_string():
with open(filename) as f:
found = False
#for line in fileinput.input(filename, inplace=1):
for line in f:
if re.search("CVS Header", line):
print 'Old Line \n' + line
####################################################################################
# Below logic: #
# if length of revision number is 4 characters (e.g. 1.15) then increment by 0.01 #
# else if it is 3 characters (e.g. 1.5) then increment by 0.1 #
####################################################################################
if len(line.split("$Revision: ")[1].split()[0]) == 4:
ver = line.split("$Revision: ")[1].split()[0]
ver = [int(x) for x in ver.split('.')]
ver = '{0[0]}.{0[1]}'.format(ver)
ver[1] += 1
print ver
new_line = str.replace(line, line.split("$Revision: ")[1].split()[0], ver)
print new_line
elif len(line.split("$Revision: ")[1].split()[0]) == 3:
ver = line.split("$Revision: ")[1].split()[0]
ver = [int(x) for x in ver.split('.')]
ver = '{0[0]}.{0[1]}'.format(ver)
ver[1] += 1
print ver
new_line = str.replace(line, line.split("$Revision: ")[1].split()[0], ver)
###
newer_line = str.replace(new_line, line.split("$Author: ")[1].split()[0], username)
newest_line = str.replace(newer_line, line.split("$Date: ")[1].split()[0], today)
current_line = str.replace(newest_line, line.split("$Date: ")[1].split()[1], time)
found = True
print 'New Line \n' + current_line
if not found:
print "No CVS Header exists in %s" % filename
if __name__ == "__main__":
#args = parser.parse_args()
replace_string()
你可以使用:
ver, rev = str(1.9).split('.')
ver + '.' + str(int(rev)+1) # result: '1.10'
这样,只要输入始终是字符串,您就可以免除对当前数字数量的检查。在我的示例中不是,这就是为什么我将 1.9 转换为字符串,但如果在浮点数上使用它会失败1.10
而不是字符串'1.10'
。但你不必担心这一点,因为你的输入
line.split("$Revision: ")[1].split()[0]
已经是一个字符串了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)