我想在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—我不需要,但它可能只是我的问题的一个特定方面。