如何重命名所有文件夹?

LA_*_*LA_ 4 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+"!")
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 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+"!")
Run Code Online (Sandbox Code Playgroud)

文档:

如果可选参数自上而下True或没有指定,三重用于目录的三元组为任何子目录(目录生成自上而下)的之前产生.如果自上而下的False,其所有子目录的三元组(目录生成由下而上)后三的目录中生成.

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