Python 递归文件重命名

Python recursive file renaming

我是 python 的新手,我正在尝试创建一个 python 脚本,该脚本能够递归重命名目录(包括子目录)中的每个文件。但是每次我 运行 脚本我都会收到错误

OSError: [Errno 2] 没有那个文件或目录

该目录包含一些文本文件和一个包含一些其他文件的文件夹。

有谁知道为什么总是这样?

代码:

import os
path = "example path here"
new_filename= ""
i = 0

filenames = os.listdir(path) # is this line needed?
for dir,subdir,listfilename in os.walk(path):
    for filename in listfilename:
        i += 1
        new_filename = 'filename' + str(i)
        src = os.path.join(path, filename)
        dst = os.path.join(path, new_filename)
        os.rename(src, dst)

我相当确定问题源于您加入了 "path" 变量的新路径,而不是从 walk.

返回的当前目录
import os
path = "example path here"
new_filename= "" # This isn't C, we don't need to pre-declare a variable.
i = 0

filenames = os.listdir(path) # is this line needed? # not that I can see, no
for dir,subdir,listfilename in os.walk(path):
    for filename in listfilename:
        i += 1
        new_filename = 'filename' + str(i)
        src = os.path.join(dir, filename) # NOTE CHANGE HERE
        dst = os.path.join(dir, new_filename) # AND HERE
        os.rename(src, dst)

您应该去阅读 os.walk 的文档,我不确定您是否完全理解它的作用?

此外,不要调用变量 dir,它会屏蔽同名的内置函数。

此外,您不需要在循环外预先声明 path