源使用了shutil.rmtree(del_path)
。虽然删除了文件夹的所有文件,但是无法删除这个空文件夹,并抛出错误,继而想使用os.remove
、os.rmdir
去删除这个空文件夹也得到同样的错误:
PermissionError: [WinError 5] 拒绝访问。: 'D:\\PycharmProjects\\flask003\\apps\\static\\uploads\\杀杀杀'
我通过Windows10给anaconda的python.exe赋予完全控制的权限,也不能解决问题。
最后找到问题原因:
似乎有问题的文件夹具有顽固的只读属性,而shutil.rmtree
不会在Windows上删除只读文件。
解决办法:
shutil.rmtree
添加一个错误处理函数来更改这样的只读标志,该函数在删除文件时会遇到问题,您可以使用它来强制删除有问题的文件。
import os, stat
import shutil
def remove_readonly(func, path, _):
"Clear the readonly bit and reattempt the removal"
os.chmod(path, stat.S_IWRITE)
func(path)
shutil.rmtree(directory, onerror=remove_readonly)
python - 使用python os.rmdir时,获取PermissionError:[WinError 5]访问被拒绝
What user do python scripts run as in windows? [duplicate]
Deleting directory in Python