文件重命名循环不起作用

Filerenaming loop not functioning

我无法理解为什么我的代码不起作用。 我想按如下顺序重命名特定文件夹中的每个文件: Foldername_1 Foldername_2 Foldername_3 等...

我编写的代码应该在每次重新循环 for 循环时将 'num' 变量增加 1。

path = os.getcwd()
filenames = os.listdir(path)

    for filename in filenames:
        num = 0
        num = num + 1
        name = "Foldername_{}".format(num)
        os.rename(filename, "{}".format(name))

但是我收到了这个错误:

FileExistsError: [WinError 183] Cannot create a file when that file already exists: '90' -> 'Foldername_1'

您正在将每次迭代num设置为 0 。将循环的num = 0移出

num = 0
for filename in filenames:
    num = num + 1
    name = "Foldername_{}".format(num)
    os.rename(filename, "{}".format(name))

您不需要再次格式化name变量; "{}".format(name) 生成与 name 中已有的字符串相同的字符串。而不是手动增加一个数字,您可以使用 enumerate() function 为您生成数字:

for num, filename in enumerate(filenames, 1):
    name = "Foldername_{}".format(num)
    os.rename(filename, name)

考虑到 os.listdir() 没有按字母顺序列出名字;相反,您将获得基于磁盘目录结构的订单,这取决于创建的订单文件和确切的文件系统实现。您可能需要手动排序:

for num, filename in enumerate(sorted(filenames), 1):