shutil.rmtree出现PermissionError解决办法

shutil.rmtree出现PermissionError解决办法

前言:

  • 今天在使用python中的shutil删除文件夹的时候出现了一个错PermissionError,原因是某个文件没有访问权限,接下来就是解决这个问题了。

解决:

  1. 根据经验文件无法删除多半是因为无法对其编辑,那么就应该查看一下该文件的各种权限,代码如下
import os


file_path = '文件路径'
print(os.access(file_name, os.R_OK))	#查看文件是否有读的权限
print(os.access(file_name, os.W_OK))	#查看文件是否有写的权限
print(os.access(file_name, os.X_OK))	#查看文件是否有执行的权限
  1. 经过查看之后发现该文件的写入权限是false,那下一步就是修改该文件的权限了,代码如下
import os
import stat


file_path = '文件路径'
os.chmod(file_path, stat.S_IWUSR)
  1. 上面的stat模块,通过查看stat.py可以得到对应的permission bits
    在这里插入图片描述
  2. 以上准备之后我们就可以完美的实现文件删除的工作了,下面是全部代码(下面循环的原因是防止有多个文件出现权限问题
import os
import stat
import shutil


file_path = '文件路径'
while 1:
    if not os.path.exists(file_path):
        break
    try:
        shutil.rmtree(file_path)
    except PermissionError as e:
        err_file_path = str(e).split("\'", 2)[1]
        if os.path.exists(err_file_path):
            os.chmod(err_file_path, stat.S_IWUSR)
ERROR: Exception: Traceback (most recent call last): File "D:\Program\anaconda3\lib\shutil.py", line 816, in move os.rename(src, real_dst) PermissionError: [WinError 5] 拒绝访问。: 'd:\\program\\anaconda3\\lib\\site-packages\\caffe2' -> 'C:\\Users\\wxg\\AppData\\Local\\Temp\\pip-uninstall-ha7clypd' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\Program\anaconda3\lib\site-packages\pip\_internal\cli\base_command.py", line 160, in exc_logging_wrapper status = run_func(*args) File "D:\Program\anaconda3\lib\site-packages\pip\_internal\commands\uninstall.py", line 98, in run uninstall_pathset = req.uninstall( File "D:\Program\anaconda3\lib\site-packages\pip\_internal\req\req_install.py", line 660, in uninstall uninstalled_pathset.remove(auto_confirm, verbose) File "D:\Program\anaconda3\lib\site-packages\pip\_internal\req\req_uninstall.py", line 373, in remove moved.stash(path) File "D:\Program\anaconda3\lib\site-packages\pip\_internal\req\req_uninstall.py", line 271, in stash renames(path, new_path) File "D:\Program\anaconda3\lib\site-packages\pip\_internal\utils\misc.py", line 311, in renames shutil.move(old, new) File "D:\Program\anaconda3\lib\shutil.py", line 834, in move rmtree(src) File "D:\Program\anaconda3\lib\shutil.py", line 750, in rmtree return _rmtree_unsafe(path, onerror) File "D:\Program\anaconda3\lib\shutil.py", line 615, in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) File "D:\Program\anaconda3\lib\shutil.py", line 615, in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) File "D:\Program\anaconda3\lib\shutil.py", line 620, in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) File "D:\Program\anaconda3\lib\shutil.py", line 618, in _rmtree_unsafe os.unlink(fullname) PermissionError: [WinError 5] 拒绝访问。: 'd:\\program\\anaconda3\\lib\\site-packages\\caffe2\\contrib\\aten\\aten_test.py'
07-09
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值