我有如下代码:
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+"!")
它几乎可以正常工作。但是一旦父文件夹重命名,就不能重命名子文件夹。我怎样才能避免这种情况?
我有如下代码:
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+"!")
它几乎可以正常工作。但是一旦父文件夹重命名,就不能重命名子文件夹。我怎样才能避免这种情况?
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
目录的三元组在其任何子目录的三元组之前生成(目录是自上而下生成的)。如果topdown是False
,则在其所有子目录的三元组之后生成目录的三元组(目录是自下而上生成的)。
因此,您可以先重命名子目录,最后才能看到顶级目录,重命名它们将不再影响如何找到子目录。