PermissionError: \[WinError 5\] 访问被拒绝

新手上路,请多包涵

每次我尝试在 Python 3.5.1 中使用 os.remove() 删除文件时,我都会收到这条消息 PermissionError: [WinError 5] Access is denied

这是简单的代码:

 def clean_thrash(path):
    dirlist=get_dirlist(path)
    for f in dirlist:
        fullname=os.path.join(path,f)
        if fullname == os.path.join(path,"thrash.txt"):
            os.remove(path)
        if os.path.isdir(fullname):
            clean_thrash(fullname)

甚至没有删除目录或子目录中的单个文件。

原文由 Saraghu Ravi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.8k
1 个回答

我也有这个问题,经过搜索找到了一个很好的解决方案。

本质上,在调用 os.remove(file_name) 之前,我们需要 更改文件权限

  1. import stat
  2. 在调用 os.remove 之前,调用 os.chmod(file_name, stat.S_IWRITE)

例如:

 import os
import stat

def clean_thrash(path):
    dirlist=get_dirlist(path)
    for f in dirlist:
        fullname=os.path.join(path,f)
        if fullname == os.path.join(path,"thrash.txt"):
            os.chmod(fullname , stat.S_IWRITE)
            os.remove(fullname)
        if os.path.isdir(fullname):
            clean_thrash(fullname)

我希望这能解决您的问题。

原文由 Enrique Nieto 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题