【问题标题】:Python: Rename multiple Image FilesPython:重命名多个图像文件
【发布时间】:2012-04-07 18:42:27
【问题描述】:

我需要一个程序,我可以告诉我从哪个数字开始,然后从那里重命名。

因为JPGPNG 都有,甚至可能是GIF,所以它必须保持扩展名相同。

因此,如果我想重命名从“a200”开始的 10k 张图片,我可以。

我最接近的是:

import os

files = os.listdir('.')
index = 0
for filename in files:
    os.rename(filename, str(index).zfill(5)+ '.jpg')
    index += 1

【问题讨论】:

  • 顺便说一句,你可以这样做for index, filename in enumerate(files):

标签: python image rename


【解决方案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'))

如果您想要更复杂的事情,例如从文件名中提取现有索引号并重新格式化,最好打开另一个问题。

【讨论】:

  • 谢谢,我试试。 ^^
  • 两个小修正:1) if f[-4:].lower() 2) 格式字符串应为:"picture-%05d%s"
  • 我没有看到我的图片得到了rename
  • @Igwest :感谢您的更正,没有您,此代码甚至根本无法正常工作。 !
  • 谢谢!我想知道是否可以按照出现在文件夹中的顺序重命名 jpgs 1 - x?例如当我运行它时,我得到Would rename Picture 366.PNG to 1341.PNG,我希望它被重命名为 366
猜你喜欢
  • 2019-11-02
  • 2022-11-13
  • 2012-11-11
  • 2014-02-19
  • 2021-02-20
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
相关资源
最近更新 更多