如何重命名所有文件夹?

时间:2012-08-05 12:14:08

标签: python rename python-2.5

我有以下代码:

temp = os.walk(sys.argv[1])
for root, dirs, files in temp:
    for i in dirs:
        dir = os.path.join(root,i)
        os.rename(dir, dir+"!")

几乎可以。但是,一旦重命名了父文件夹,它就无法重命名子文件夹。我怎么能避免这种情况?

1 个答案:

答案 0 :(得分:8)

topdown设置为False的树行走:

temp = os.walk(sys.argv[1], topdown=False)
for root, dirs, files in temp:
    for i in dirs:
        dir = os.path.join(root,i)
        os.rename(dir, dir+"!")

来自documentation

  

如果可选参数 topdown True或未指定,则在其任何子目录的三元组(目录从上到下生成)之前生成目录的三元组。如果 topdown False,则在所有子目录的三元组(目录是自下而上生成)之后生成目录的三元组。

因此,您首先要重命名子目录,并且最后会看到顶级目录,重命名它们将不再影响子目录的查找方式。