Filerenaming循环无法正常运行

时间:2016-09-17 14:09:58

标签: python python-3.x file-rename

我无法理解为什么我的代码无法正常工作。 我想按照以下顺序重命名特定文件夹中的每个文件: Foldername_1 Foldername_2 Foldername_3 等...

我写的代码应该增加' num'每次重新循环for循环时变量为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]无法在该文件中创建文件   已存在:' 90' - > ' Foldername_1'

1 个答案:

答案 0 :(得分: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):