字符串中的数字自增
我正在尝试在满足某个条件之前,得到以下的输出。
test_1.jpg test_2.jpg .. test_50.jpg
我现在的解决办法(如果能叫解决办法的话)是
fileCount = 0
while (os.path.exists(dstPath)):
fileCount += 1
parts = os.path.splitext(dstPath)
dstPath = "%s_%d%s" % (parts[0], fileCount, parts[1])
不过……这产生了以下的输出。
test_1.jpg test_1_2.jpg test_1_2_3.jpg .....etc
问题是:我该如何在当前位置更改数字(而不是把数字加到最后)?
附:我正在用这个来做一个文件重命名工具。
更新:通过下面的各种想法,我发现了一个有效的循环。
dstPathfmt = "%s_%d%s"
parts = os.path.splitext(dstPath)
fileCount = 0
while (os.path.exists(dstPath)):
fileCount += 1
dstPath = parts[0]+"_%d"%fileCount+parts[1]
5 个回答
0
看起来你的条件 os.path.exists(dstPath)
在检查同一个重命名的文件时,可能会多次匹配到。举个例子,它先把 test.jpg 重命名为 test_1.jpg;然后再把 test_1.jpg 重命名为 test_1_2.jpg,依此类推。
1
最简单的方法可能是把dstPath设置成类似“test_%d.jpg”的格式,然后只需要传入一个变化的数字就可以了:
dstPath = "test_%d.jpg"
i = 1
while os.path.exists(dstPath % i):
i += 1
dstPath = dstPath % i # Final name
1
每次你在循环中转一圈的时候,打印出parts[0]的值……我想你可能会感到惊讶。