Python os.rename和os.walk在一起

时间:2013-06-23 05:07:39

标签: python filenames os.walk

我刚写了一个python脚本来摆脱文件名中的一些烦人的后缀,

这是我的代码:

import os

for root, dirs, files in os.walk("path"):

    for filename in files:

        if filename.endswith("[AnnoyingTag].mov"):

            os.rename(filename, filename[:-18]+'.mov')

但我在最后一行收到了错误:

OSError: [Errno 2] No such file or directory

我很确定我有正确的路径,因为我可以正确打印出所有文件名。

...真的不知道为什么这不起作用。

感谢您的回答

3 个答案:

答案 0 :(得分:11)

加入路径的首选方法是使用os.path.join,更改此行:

os.rename(filename, filename[:-18]+'.mov')

替换为:

os.rename(os.path.join(root, filename), os.path.join(root, filename[:-18]+'.mov'))

答案 1 :(得分:8)

您可以替换

os.rename(filename, filename[:-18]+'.mov')

os.rename(root + os.sep + filename, root + os.sep + filename[:-18]+'.mov')

答案 2 :(得分:0)

修正:

import os

for root, dirs, files in os.walk("path"):
    for filename in files:
        if filename.endswith("[AnnoyingTag].mov"):
            os.rename(root+'\\'+filename, root+'\\'+filename[:-18]+'.mov')

我认为您的问题是您重命名的文件不在当前工作目录中。