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

重命名已排序的文件(Python 3.3),python,file,sorting,python-3.x,rename,Python,File,Sorting,Python 3.x,Rename,我对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.l

我对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”。。。没有什么是在它最初的位置。 你能帮我个忙吗


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

您可以使用下面的脚本

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

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))

你可以使用下面的脚本

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

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))

实际上,您和simon的方法都将失败,因为系统无法将Slide1重命名为Slide121,因为已经存在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()

实际上,您和simon的方法都将失败,因为系统无法将Slide1重命名为Slide121,因为已经存在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()

你把原来的幻灯片弄丢了吗?你有备份吗?没有,我在幻灯片的副本上测试了我的代码,所以我仍然保留了原始幻灯片(是的,谢谢brain)你丢失了原始幻灯片吗?你有备份吗?没有,我在幻灯片的副本上测试了我的代码,所以我仍然保留了原始的幻灯片(是的,谢谢brain)谢谢,它成功了!实际上,为了避免“文件名已经存在”的问题,我不得不使用不同的正则表达式和新名称运行代码两次,但这花费了我大约3分钟的时间,而不是我手动更改这些名称所花费的数百分钟。谢谢!很高兴它起到了作用,尽管Selcuk显然采取了更为深思熟虑的方法!我还添加了
121
而不是正确的
120
…谢谢,是的,我注意到了,但我仍然有备份幻灯片,所以一切都很好。谢谢,它成功了!实际上,为了避免“文件名已经存在”的问题,我不得不使用不同的正则表达式和新名称运行代码两次,但这花费了我大约3分钟的时间,而不是我手动更改这些名称所花费的数百分钟。谢谢!很高兴它起到了作用,尽管Selcuk显然采取了更为深思熟虑的方法!我还添加了
121
而不是正确的
120
…谢谢,是的,我注意到了,但我仍然有备份幻灯片,所以一切都很好。