当前位置: 代码迷 >> python >> 重命名已经排序的文件(Python 3.3)
  详细解决方案

重命名已经排序的文件(Python 3.3)

热度:38   发布时间:2023-07-14 08:47:39.0

我对Python的了解不多,这就是为什么我在这里发布。 我目前有480个文件,它们的名称类似于“ Slide1”,“ Slide2”,“ Slide3”等。问题是所有名称都必须更改,以便第一个文件名为“ Slide121”,第二个“ Slide122”,第三个“ Slide123”等。

目前,我有以下代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

a = 121
b = 121

for filename in os.listdir('.'):
    if filename.startswith("Slide"):
        os.rename(filename, "Slide"+str(a)+"a.png")
        a += 1

for filename in os.listdir('.'):
    if filename.startswith("Slide"):
        os.rename(filename, "Slide"+str(b)+".png")
        b += 1

这应该起作用,避免出现错误“此名称已存在”。 事实是所有文件都有一个新名称,但是以前的“ Slide1”文件现在是“ Slide124”,以前的“ Slide2”文件现在是“ Slide85” ...最初没有任何内容。 你能以某种方式帮助我吗?

顺便说一句,我为我的英语道歉。 谢谢。

实际上,您和simon的方法都将失败,因为系统已经存在Slide121,因此无法将Slide1重命名为Slide121。 您应该从编号最高的幻灯片开始,如下所示:

import os

def main():
    for suffix in range(480,0,-1):
        os.rename("Slide%s.png" % suffix, "Slide%s.png" % (suffix + 120))

if __name__ == '__main__':
    main()

您可以使用下面的脚本。

请确保备份幻灯片,以防脚本无法正常工作。

import os
import re

REGEX = re.compile("Slide([0-9]+).png")

for filename in os.listdir('.'):
    match_ = re.match(REGEX, filename)
    if match_:
        slide_n = int(match_.group(1)) + 121
        os.rename(filename, "Slide{}.png".format(slide_n))