shutil.rmtree删除只读文件

发布于 2021-01-29 16:01:12

我想shutil.rmtree在Python中使用以删除目录。有问题的目录包含一个.git控制目录,该目录git标记为只读和隐藏。

只读标志导致rmtree失败。在Powershell中,我将执行“ del
-force”来强制删除只读标志。Python中是否有等效功能?我真的不希望遍历整棵树两次,但是onerrorrmtree的参数似乎没有重试该操作,因此我不能使用

def set_rw(operation, name, exc):
    os.chmod(name, stat.S_IWRITE)

shutil.rmtree('path', onerror=set_rw)
关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    经过更多调查后,以下内容似乎起作用:

    def del_rw(action, name, exc):
        os.chmod(name, stat.S_IWRITE)
        os.remove(name)
    shutil.rmtree(path, onerror=del_rw)
    

    换句话说,实际上是在onerror函数中删除该文件。(在这种情况下,您可能需要检查onerror处理程序中的目录并使用rmdir-
    我并不需要它,但这可能只是我的问题所特有的。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看