遇见一个删除文件的问题,网上的答案却都在扯淡?

24G显存跑1T参数MoE模型:动态量化+智能卸载实战指南 混合专家(MoE)架构是大语言模型实现参数规模与推理效率平衡的关键范式,其天然稀疏性使‘仅激活部分专家’成为可能;结合GGUF格式的动态1–2bit量化技术,可在大幅压缩模型体积的同时保持高精度推理能力;通过llama.cpp的智能层卸载(-ot)、统一KV缓存(--kv-unified)和硬件感知调度(--fit on),单张RTX 4090(24GB VRAM)即可稳定运行Kimi-K2.5等千亿级MoE模型;该方案已广泛应用于本地AI开发、私有化RAG部署及边缘端代码生成等低延迟、高可控性场景,为轻量 阅读详情
遇见一个删除文件的问题,网上的答案却都在扯淡?
关于文件(夹)的删除

之前的文章介绍过关于Python删除文件与文件夹的方式,在这里简单的复习下
删除文件的方法比较单一:

import os
os.remove(file)

而删除文件夹的时候,则有几种场景需要判断:

# path是文件夹路径,注意文件夹需要时空的才能被删除
os.rmdir(path)

# 通过os.walk,设置topdown=False,即可从叶子结点至根节点逐层删除
import os

for root, dirs, files in os.walk('D:\\software_temp', topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))

# 通过shutil无脑删除
import shutil
shutil.rmtree('D:\\software_temp')
匪夷所思的问题

今天在写代码的时候,涉及到一个解压后删除多余文件的问题。然而,当执行os.remove(path)的时候,却报错了,提示如下:

Traceback (most recent call last):
File "E:/remove_readonly_file.py", line 12, in <module>
os.remove('demo.txt')
PermissionError: [WinError 5] 拒绝访问。: 'demo.txt'

不知道大家是否和我的感觉一样,看到拒绝访问首先想到的是,这个文件被占用了,导致无法删除。然后检查代码是否存在未释放的进程。从头到尾review了代码,没有什么问题。
那上百度查查呗,结果千奇百怪的答案出来了,但总结下来都是说安装或者重装Python的时候,存在权限设置问题,需要修改Python.exe对User用户的权限。天真的我居然真的照着去做了,结局依然是没什么卵用。

嫁人要嫁程序员

有个笑话说,嫁人要嫁程序员,为什么?
因为他们无时无刻都在问自己,我错哪儿了,我到底错哪儿了,求求你告诉我,我改还不行吗?


只读属性

终于在无意间右键属性看了下文件,答案找到了,文件设置了只读属性。

获取文件属性

一直觉得Linux下的文件才会涉及到文件属性的问题,今天算是阴沟翻船了。那么Python如何获取文件的属性呢?来看看代码实现:

import os
os.stat('demo.txt')
# output
os.stat_result(st_mode=33060,
               st_ino=2251799813692013,
               st_dev=3223892962,
               st_nlink=1,
               st_uid=0,
               st_gid=0,
               st_size=0,
               st_atime=1596983001,
               st_mtime=1596981707,
               st_ctime=1596981707)

这些返回的参数代表什么意思呢?

st_mode: inode 保护模式
st_ino: inode 节点号
st_dev: inode 驻留的设备
st_nlink: inode 的链接数
st_uid: 所有者的用户ID
st_gid: 所有者的组ID
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据
st_atime: 上次访问的时间
st_mtime: 最后一次修改的时间
st_ctime: 文件创建时间

如果Linux使用多的朋友,不看注释都能猜到应该去找st_mode,但是这个mode的数字33060代表什么呢?
这么看是不就理解了:oct(33060) = '0o100444'

文件属性

r代表4 w代表2 x代表1 咱们获取到的444,代表属主、属组、其他人权限均为只读。

上面的方式只是为了方便大家理解文件属性,但在实际的操作中,我们并不会通过该方式获取文件属性,而是使用下面的判断:

improt os
os.access(file,os.W_OK)

# os.F_OK: 检查文件或文件夹是否存在;
# os.R_OK: 检查文件或文件夹是否可读;
# os.W_OK: 检查文件或文件夹是否可以写入;
# os.X_OK: 检查文件或文件夹是否可以执行
修改文件属性

知道了文件的属性的查看,那么只需要对文件添加可写的属性,即可完成删除操作了。使用如下;

import os
import stat
# 增加写属性
os.chmod(file, stat.S_IWRITE)
# 取消写属性
os.chmod(file, stat.S_IWOTH)

那么,以后我们在删除文件的时候,执行如下操作,就更加稳妥了:

def judge_mode(path, file):
    abs_file = os.path.join(path, file)
    if not os.access(abs_file, os.W_OK):
        os.chmod(abs_file, stat.S_IWOTH)

for root, dirs, files in os.walk('D:\\software_temp', topdown=False):
    for file in files:
        judge_mode(root, file)
        os.remove(os.path.join(root, file))
    for doc in dirs:
        judge_mode(root, doc)
        os.rmdir(os.path.join(root, doc))
Codex 桌面端自定义模型列表为空 — 修复记录 摘要:Codex桌面端首次启动正常,但二次启动后出现中文界面且模型列表丢失。问题根源在于Electron的Chromium持久化状态损坏,导致UI渲染异常。解决方案包括:1) 将config.toml中的模型路径改为绝对路径;2) 删除损坏的状态文件.codex-global-state.json;3) 清除Chromium用户数据目录AppData\Roaming\Codex\web。验证显示修改后模型功能恢复正常,重装无效的原因是卸载未清除用户数据目录。 阅读详情

相关推荐

【IC设计实战】去耦电容decap在电源完整性中的关键作用与选型策略

本文深入探讨了去耦电容(decap)在IC设计电源完整性中的核心作用。文章分析了decap如何通过提供本地电荷缓冲来抑制电源噪声与电压波动,并详细阐述了其选型与布局策略,包括MIM、MOM、MOS电容的特性对比,以及如何权衡峰值抑制与建立速度的矛盾,为设计稳定可靠的芯片电源系统提供实践指导。

weixin_29233857的博客 248

python 之 shutil 文件的复制、删除、移动文件以及目录,并支持文件的归档、压缩和解压

shutil 模块于文件和文件集合的高级操作,包括:复制、删除、移动文件以及目录,并支持文件的归档、压缩和解压等。源文件的权限无法获取,那么 shutil.copymode() 会抛出一个 PermissionError 异常。本质上,它检查给定命令是否在环境变量中列出的任何目录中可用PATH。目标文件已存在,shutil.copymode() 会改变它的权限来匹配源文件的权限。复制文件的权限位、最后访问时间、最后修改时间和标记。不会复制文件内容,只复制文件的状态信息。和文件夹内所有的内容。

风华浪浪的博客 1786

【EPICS学习记录】根据官方教程创建一个IOC应用

参照官网给出的IOC创建教程逐步操作完成了一个IOC应用的创建,官网教程中有部分过程表述的不清晰,自己摸索之后完成了IOC的创建,并把流程记录下来。其中有一些操作不是很理解,有问题或者建议欢迎指正。

yifeng_H的博客 3661

文件13:文件路径-路径文件删改方法

Python学习-文件路径删改方法:p.chmod、p.lchmod、p.rename、p.replace、p.rmdir、p.unlink、p.write_text、p.write_bytes

davidksatan的博客 1244

Windows Server安装Intel I219-V网卡驱动完整教程

在Windows Server系统上安装Intel I219-V网卡驱动的方法。

小白成长历程 5177

LTX-2.3 V1.6:8G显存本地AI视频生成工具与int8量化加速实践

这次我们来看一个本地部署的AI视频生成工具——LTX-2.3文字图片生成带音频视频工具V1.6版本。这个工具最大的特点是支持int8量化加速,相比原版提速2-4倍,效果更好,而且8G显存就能运行,不需要搭建复杂环境,解压即可使用。 对于想要在本地电脑上快速生成带音频视频内容的用户来说,这个工具解决了几个关键痛点:首先是硬件门槛低,8G显存意味着大多数主流游戏显卡都能胜任;其次是部署简单,避免了Python环境配置、依赖包冲突等常见问题;最后是性能优化明显,int8加速让生成速度大幅提升。 本文会重点演示如何

hqmln的博客 1235

踩坑:python os.remove PermissionError: [WinError 5] 拒绝访问

在用python删除某个文件的时候触发了 PermissionError: [WinError 5] 拒绝访问 然后在网上尝试了各种方法,大部分解决方法是处理目标文件的权限或者是处理python.exe权限 后面想想其实权限问题往往不会那么关键 就在马上裂开的时候,我发现 我要删除的文件的属性是 “只读” 真的是麻了,p4v 同步到本地的文件属性会是 只读,导致remove根本无法操作 所以排除了所有的权限问题之后,需要把只读属性去掉 然后就正常删除了 。。。。。 os.system(f"

三水的鱼塘♂ 2万+

告别偏色!手把手教你用i1Profiler 3.5为喷墨打印机制作专属ICC曲线(附D50/D65光源选择指南)

本文详细介绍了如何使用i1Profiler 3.5为喷墨打印机制作专属ICC曲线,解决设备偏色问题。从色彩管理基础、软件配置到色块打印与测量实战技巧,逐步指导用户完成曲线制作,并提供了D50/D65光源选择指南,确保色彩还原精准。适合摄影师和设计师提升打印质量。

weixin_30613343的博客 1万+

Python 3.7.1 模块 pathlib

目录1.基本使用2. 纯路径(Pure paths)2.1 类class pathlib.PurePath(*pathsegments)class pathlib.PurePosixPath(*pathsegments)class pathlib.PureWindowsPath(*pathsegments)2.2 常规属性2.3 操作2.4 访问路径的各部分PurePath.parts2.5 方法...

百年da孤独 的专栏 2189

排列显示阿拉伯语、数字及英文时的处理方法

这段时间参与开发沙特阿拉伯的网站模板,模板使用的语言是阿拉伯语,其显示顺序为从右到左,而中文、数字及英文的显示顺序为从左到右 ,所以当遇到一行文字内既有阿拉伯语又有数字和英文时会出现语序混乱的问题,如 期待显示的文案为: 按顺序写入,对应的代码如以下,其中currency_pay为变量,值为356SAR <span>الدفع الفعلي:{{currency_pay}}</span> 显示为 الدفع الفعلي : 356SAR 金额356和货币符号SAR分开了,这样显

llq886的博客 5805

042、双管反激的电压应力优势

【摘要】本文通过300W工业电源炸管案例,对比分析了单管与双管反激拓扑的电压应力差异。单管反激因漏感能量难以处理,尖峰电压可达1180V,需依赖RCD吸收电路但效率低下;双管反激通过钳位二极管将漏极电压限制在输入电压水平(实测650V),能量回馈使效率提升2-3%。虽增加两个MOS管,但可选用600V器件(单管需1200V),总成本反降15%以上。作者建议150W以上或高压输入场景优先采用双管反激,其确定的电压应力可显著提升可靠性,避免单管反激的参数玄学问题。关键设计要点包括快恢复二极管选型、紧凑布局及漏感

Jack010169的博客 83

一步解决Error while building/deploying project Qttext (kit: Desktop Qt 5.5.1 MinGW 32bit) When executing

MinGW 32bit) When executing step “qmake” ** 网上很多关于解决“Qt编译时的 qmake”问题的方法都是扯淡,例如如下的答案 (1)右键构建qmake; (2)重装Qt 1 2 3 以上两种答案都是扯淡,瞎bb。 出现Error while building/deploying project Qttext (kit: Desktop Qt 5.5.1 MinGW 32bit) When executing step "qmake"可能会

u013352076的专栏 1万+

在Simulink中搭建一个基于IoT设备间通信协议栈的仿真模型

物联网(IoT)设备间的通信协议栈仿真对于理解不同层级的协议如何协同工作,以及优化网络性能至关重要。通过Simulink结合MATLAB的强大功能,我们可以模拟和分析从物理层到应用层的完整通信过程。下面详细介绍如何使用Simulink进行IoT设备间通信协议栈的仿真。

amy_mhd的博客 156

《Microsoft SQL Server 2008 MDX Step by Step》附加MDF文件失败的解决办法

注:前面都是扯淡了,解决办法直接看后面。         因为工作的原因需要学习MDX,网上找了一些资料然后,在博客园和优快云上有人写的关于这本书的笔记,内容很丰富,于是想着先看看这些笔记吧。我根据博客上的提示下载了Sample示例文件,下载地址是 http://go.microsoft.com/fwlink/?LinkId=139491 ,下载了,也安装了。可是问题来了,我无法附加里面的数据

from.Begin();to.End(); 1993

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

解决Tomcat启动后404的问题

概述 当我遇到这个问题的时候,我真是操**的崩溃了,你懂我意思吧,就是那种各种百度也找不到答案,然后有好多回答都是帮我解释什么叫”404”????Excuse me ???????我用你解释吗??? 我觉的真挺逗的,还有一大堆说程序有问题的,就是这个说法啊不能排除,确实有的开发人员给运维的war包就是有问题的,不过在我这儿跟包没关系,纯粹就是自己的问题,所以运维人员如果查到网上说让你去怪开...

K-free的博客 7万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

40个Java多线程问题汇总 侵立删

转自:http://www.importnew.com/18459.html前言Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些...

心神沫沫的收藏 118

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

一步解决Error while building/deploying project MyQtDemo (kit: Desktop Qt 5.7.0 MSVC2015 32bit) When exec

网上很多关于解决“Qt编译时的 qmake”问题的方法都是扯淡,例如如下的答案 (1)右键构建qmake; (2)重装Qt 以上两种答案都是扯淡,瞎bb。 出现 Error while building/deploying project MyQtDemo (kit: Desktop Qt 5.7.0 MSVC2015 32bit) When exec 可能...

琅嬛福地 4万+

IIS7无后缀URL部署问题 MVC4 MVC URL映射 windows server 2008

这部分是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。 如有冒犯请联系本人,或删除,或标明出处。 因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。 原文 出http://www.cnblogs.com/YouyouWang/archive/2013/01/31/2887465.html     前言和

路漫漫 修远兮 6413

[转载]一步解决Error while building/deploying project MyQtDemo (kit: Desktop Qt 5.7.0 MSVC2015 32bit)

[转载]一步解决Error while building/deploying project MyQtDemo (kit: Desktop Qt 5.7.0 MSVC2015 32bit) When exec 分类专栏:Qt教程Qt开发教程专栏 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.c...

Vay0721的博客 2547

Error while building/deploying project MyQtDemo (kit: Desktop Qt 5.7.0 MSVC2015 32bit) When exec的解决方

网上很多关于解决“Qt编译时的 qmake”问题的方法都是扯淡,例如如下的答案     (1)右键构建qmake;     (2)重装Qt 以上两种答案都是扯淡,瞎bb。         出现 Error while building/deploying project MyQtDemo (kit: Desktop ...

weixin_43124720的博客 505

java maven部署干货

换单位以后接触了第一次接触的maven项目,一个项目加环境弄了三天,其中也有找朋友帮忙,遇到问题也在网上查了很多,但是网上百分之70是复制的,百分之80答案并不能达到解决问题的程度,说白了就是扯淡,现在我将我遇到的问题整理一下,供大家参考.maven下载地址:http://maven.apache.org/download.cgi按照公司规定,下载的maven3..5.3,jdk1.8.0.11,...

qq_34084139的博客 4554

一次惨痛的数据恢复

今天拿到一块硬盘,这块硬盘是做移动硬盘用的,共有4个分区,F,G,H,I 其中打开G盘的时候提示: 无法访问G:/ 驱动器中的软盘不对,将插入(卷序列号:)驱动器G:/ 打开H盘的时候提示: 无法访问H: / 文件或目录损坏且无法读取文件系统 在查看这两个盘符的格式发现以前的ntfs格式变成RAW格式,造成这个问题的原因可能是:没有正常关机,硬盘忽然断电引起...

weixin_34101784的博客 129

Docker 安装及常用命令详解

Dokcer 常用命令详解及构建前言:docker历史:环境配置系统注意:安装docker常用命令演示查看日志的时候遇到一个非常坑的地方,docker中的时间比目前时间慢8小时,如果我们按照docker中的时间查看某个时间段的日志,会发现找不到日志,如果我们按照我们目前的时间去查日志,那么就可以查看日志。如图:注意看打印日志的时间和我查看日志的时间段!扯淡环节VMware和docker的对比DevOps好处(使用docker部署项目)docker的基本组成 前言: Docker 是一个开源的应用容器引擎,可

SuperBins的博客 465

Python os模块常用部分功能总结

在Python这一语言中,有一种标准模块叫做os模块,Python os模块包含普遍的操作系统功能.os.sep 可以取代操作系统特定的路径分割符。os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。os.geten...

weixin_34185364的博客 213

python之os模块

OS模块 import os 1.返回操作系统类型 :posix 是linux操作系统,nt 是windows操作系统 print(os.name) print('Linux' if os.name == 'posix' else 'Windows') posix Linux 2.操作系统的详细信息 info = os.uname() print(info) print(info.sysna...

qq_36016375的博客 2万+
上一篇: 谁说Python的shutil不支持7z解压缩,我来扩展它的功能!
下一篇: 本想让程序执行加速,却走上了bug翻车之路
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值