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+"!")

它几乎可以正常工作。但是一旦父文件夹重命名,就不能重命名子文件夹。我怎样才能避免这种情况?

4

1 回答 1

9

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+"!")

文档中:

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

因此,您可以先重命名子目录,最后才能看到顶级目录,重命名它们将不再影响如何找到子目录。

于 2012-08-05T12:16:24.357 回答