Python批量重命名脚本将文件发送到根文件夹

时间:2015-10-27 16:07:04

标签: python python-3.x batch-processing batch-rename

好的,这很奇怪,也许很尴尬。 我制作了一个脚本,所以我可以更改字幕文件的结尾以保持一致性。 基本上它将A.X.str替换为A.Y.str。它在一个文件夹中完美运行。

然后我决定制作它的递归版本,这样我就可以在我拥有的任何文件夹上进行,无论这些剧集在一起,是按季节分开还是在每个路径上分开。

我真的不知道如何或为什么,但它将它到达的所有文件发送到我正在使用的根文件夹,直到它停止引发FileExistsError。

我使用的代码位是:

def rewrite(folder, old, new):
    for f in next(os.walk(folder))[2]:
        os.rename(os.path.join(folder, f),
                  os.path.join(path, f.replace(old, new)))
    for f in next(os.walk(folder))[1]:
        x = os.path.join(folder, f)
        rewrite(x, old, new)

老' " A.X.str",' new'是" A.Y.str"和文件夹是根文件夹的完整路径" C:\ Series \ Serie Name"。

为什么这项工作不是递归的?代码的第一位(First FOR循环)可以在单个文件夹中正常工作。 问题是" next"我用来获取文件和文件夹的名称?

1 个答案:

答案 0 :(得分:2)

您向我们展示的代码是在重命名目标中使用path变量 - 而应该是folder变量。