只递归修改目录的Chmod?
对我来说这个不管用:
target_dir = "a/b/c/d/e/"
os.makedirs(target_dir,0777)
os.chmod 只对最后一个目录有效...
3 个回答
-1
这个问题的一行解决方案是:
list(map(lambda x: os.chmod(x[0], 0o775), os.walk(target_dir)))
当你需要在Python控制台中进行这些更改时,这个方法很有用。不过在实际的生产代码中,使用上面提到的更易读的for
循环版本可能会更好。
1
ghostdog74的回答差不多是对的,但它在改变目录权限之前就试图进入那个目录。所以,真正的解决办法虽然没那么优雅,但能解决问题:
os.chmod(path , 0o777)
for root,dirs,_ in os.walk(path):
for d in dirs :
os.chmod(os.path.join(root,d) , 0o777)
10
你可以使用 os.walk
来遍历文件夹。 (下面的代码没有测试过,建议你自己试试看)
for r, d, f in os.walk(path):
os.chmod(r, 0o777)