源使用了shutil.rmtree(del_path)。虽然删除了文件夹的所有文件,但是无法删除这个空文件夹,并抛出错误,继而想使用os.removeos.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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐