2015-10-27 32 views
0

好吧,这很奇怪,也许很尴尬。 我做了一个脚本,所以我可以改变字幕文件的结尾以保持一致性。 基本上它将A.X.str替换为A.Y.str。它在一个文件夹中完美运行。Python批量重命名脚本发送文件到根文件夹

然后我决定做它的递归版本,所以我能做到这一点对我有任何的文件夹,不管在那里一起,按季节或每一个单独的路径上分开的情节。

我真的不知道如何或为何,但它发出的所有它达到我所用,直到它停止养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) 

其中“老”是“AXstr”,“新”是“AYstr”和文件夹的根文件夹的完整路径“C :\ Series \ Serie Name“。

为什么不能像递归一样工作?第一个代码(第一个FOR循环)可以在单个文件夹中正常工作。 与我用来获取文件和文件夹的名称的“下一个”是否存在问题?

+0

这可能帮助:http://stackoverflow.com/questions/12468022/python-fileexists-error-when-making-directory –

+0

@RNar:这是一个完全不同的问题。 –

回答

1

你是显示我们正在使用的命名目的地path变量的代码 - 这应该是folder变量,而不是。