一行简短的Os.Walk代码让我失望

时间:2015-03-01 06:34:14

标签: python

我只想更改整个目录中的文件名。使用os.listdir的单个目录的代码是可靠的,但是当我向os.walk移动时,它失败了。

import os

rootFolder = "C:/Users/.../Desktop/Docs"

for folder in os.walk(rootFolder):
    for filename in folder:
        os.rename(filename, filename[4:])

最后一行给了我一个错误"系统无法找到指定的路径" 任何人都可以帮帮我吗?如此接近......

1 个答案:

答案 0 :(得分:0)

如果您使用这些文件的完整路径名,您的代码将起作用。如果您将os.walkdirpath合并,则可以从filename获取完整路径名。方法如下:

import os

root_folder = "C:/Users/.../Desktop/Docs"

for dirpath, dirnames, filenames in os.walk(root_folder):
    for fname in filenames:
        full_fname = os.path.join(dirpath, fname)
        renamed = os.path.join(dirpath, fname[4:])
        os.rename(full_fname, renamed)

使用重命名文件的完整路径名也很重要。否则,文件将被移动到您运行Python解释器的目录。

请注意,在第三行代码中,我使用 tuple unpacking (或序列解包,正如文档所称的那样)。