我有以下代码:
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+"!")
几乎可以。但是,一旦重命名了父文件夹,它就无法重命名子文件夹。我怎么能避免这种情况?
答案 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+"!")
如果可选参数 topdown 为
True
或未指定,则在其任何子目录的三元组(目录从上到下生成)之前生成目录的三元组。如果 topdown 是False
,则在所有子目录的三元组(目录是自下而上生成)之后生成目录的三元组。
因此,您首先要重命名子目录,并且最后会看到顶级目录,重命名它们将不再影响子目录的查找方式。