我需要一个程序,我可以告诉什么号码开始,然后从那里重命名。
扭转的是它必须保持延伸相同,因为两者都有JPG
和PNG
,甚至可能GIF
。
所以如果我想从“a200
”开始重命名10k张图片,我可以。
我最接近的是:
import os
files = os.listdir('.')
index = 0
for filename in files:
os.rename(filename, str(index).zfill(5)+ '.jpg')
index += 1
最佳答案
在进行文件重命名时使用dryrun选项是个好主意,这样在进行不太容易逆转的更改之前,您可以看到会发生什么。。。
你应该检查一下这个新名字已经不存在了。
import os
# Create a list of files from the current directory who's last 4 characters
# as lowercase are either '.jpg' or '.png'
files = [ f for f in os.listdir('.') if f[-4:].lower() in ('.jpg','.png') ]
DRYRUN=True
for (index,filename) in enumerate(files):
extension = os.path.splitext(filename)[1]
newname = "picture-%05d%s" % (index,extension)
if os.path.exists(newname):
print "Cannot rename %s to %s, already exists" % (filename,newname)
continue
if DRYRUN:
print "Would rename %s to %s" % (filename,newname)
else:
print "Renaming %s to %s" % (filename,newname)
os.rename(filename,newname)
小更新
如果要保存文件的当前词序,则只需要对初始文件列表进行排序:
files = sorted(f for f in os.listdir('.') if f[-4:].lower() in ('.jpg','.png'))
如果你想要更复杂的东西,比如从文件名中提取一个现有的索引号,并重新格式化它,最好打开另一个问题。