我想在python中使用shutil.rmtree删除一个目录。相关目录包含一个.git控制目录,Git将其标记为只读和隐藏。
只读标志导致rmtree失败。在PowerShell中,我将执行“del-force”以强制删除只读标志。在python中是否有等价物?我真的不想走整棵树两次,但是rmtree的onerror参数似乎没有重试该操作,因此我不能使用

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

shutil.rmtree('path', onerror=set_rw)

最佳答案

经过更多的调查,以下似乎有效:

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

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

07-27 13:43