在Python中删除只读目录
shutil.rmtree
在Windows系统上无法删除只读文件。有没有什么Python的命令可以像Linux里的“rm -rf”那样删除文件呢?为什么这件事这么麻烦呢?
7 个回答
4
另一种方法是在Windows上定义rmtree,如下所示:
rmtree = lambda path: subprocess.check_call(['cmd', '/c', 'rd', '/s', '/q', path])
4
如果你从PyWin32导入win32api,你就可以使用:
win32api.SetFileAttributes(path, win32con.FILE_ATTRIBUTE_NORMAL)
来让文件不再是只读的。
72
shutil.rmtree
这个函数可以接受一个错误处理的函数,当它在删除文件时遇到问题时,就会调用这个错误处理函数。你可以利用这个功能强制删除那些有问题的文件。
这个想法是受到以下两个链接的启发:http://mail.python.org/pipermail/tutor/2006-June/047551.html 和 http://techarttiki.blogspot.com/2008/08/read-only-windows-files-with-python.html:
import os
import stat
import shutil
def remove_readonly(func, path, excinfo):
os.chmod(path, stat.S_IWRITE)
func(path)
shutil.rmtree(top, onerror=remove_readonly)
(我还没有测试过这个代码片段,但它应该能帮助你入门)