只递归修改目录的Chmod?

3 投票
3 回答
16814 浏览
提问于 2025-04-17 00:19

对我来说这个不管用:

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)

撰写回答