S系列·删除文件夹的几种姿势
S系列·删除文件夹的几种姿势
- 目的
- 删除姿势
- 总结
S又称水,亦可读作Small,在日常工作学习过程中,偶尔会发现之前没有看见的、小的、有趣的操作,或许这些操作对于当下的问题解决并无意义,仍然想记录下来,或许能以单独写成一篇完整的文章,则作为流水账似的记下。
系列文章说明:
S系列·<<文章名称>>
平台:
windows 10.0
python 3.8
pywin32 227 (或者安装pypiwin32)
send2trash 1.5.0
目的
将一个包含数据文件的目录删除。
删除姿势
以下操作均在windows系统中操作。
- 姿势一
直接在电脑上右击该文件夹,选择删除,或者使用Delete按键删除文件,这种方法删除文件,会将文件转移至回收站,如果需要恢复,点击还原
即可。
- 姿势二
在python
中使用使用os
模块:
import osdelete_dir = r'测试文件夹'
for r, d, f in os.walk(delete_dir, topdown=False):for files in f:os.remove(os.path.join(r, files)) # 删除文件os.removedirs(r) # 删除文件夹,必须为空
使用os.walk
遍历待删除文件的内容,默认topdown=True
,先输出最外层的再输出内层,此时会先将非空的文件夹输出,而是用os.removedirs
删除非空文件夹会尝试报错,将topdown=False
,先将内层文件逐个输出并删除,最后再删除上层的文件夹,直至全部删除。
- 姿势三
pathlib
模块:
from pathlib import Pathdelete_dir = Path(r'测试文件夹')
# 删除所有文件
[i.unlink() for i in delete_dir.rglob('*') if i.is_file()]
# 删除包含的所有空文件夹
[i.rmdir() for i in delete_dir.rglob('*') if i.is_dir()]
# 删除当前文件夹
delete_dir.rmdir()
与os
类似,将文件与文件夹分开删除,两次递归分别判断是否为文件或者目录,并按照对应删除方式删除,最后删除当前文件夹。
- 姿势四
shutil
模块
from shutil import rmtreedelete_dir = r'测试文件夹'
rmtree(delete_dir)
rmtree
递归返回该目录下所有文件及文件夹,并将其删除,原理同姿势二
,以下为rmtree
核心代码部分:
rmtree
首先判断删除方式是否为安全删除,以安全删除方式为例,对递归结果进行判断,如果为文件夹,判断内层是否还有文件,如果还有进行递归,再对递归结果做删除操作,如果为文件,直接进行删除,此种方式相比姿势二
有了更多对文件状态的判断。
- send2trash+shell
上述几种python方法删除文件会直接删除,不会经过回收站,如果想类似于姿势一的操作,可安装send2trash
模块,将文件转移至回收站。
pip install send2trash
pip install pywin32 (或者 pip install pypiwin32)
import send2trashdelete_dir = r'测试文件夹'
send2trash.send2trash(delete_dir)
win32com
是pywin32
包中的一个模块,调用shell
方法对回收站做处理。
from win32com.shell import shell, shellcondef recyclebin_empty(confirm=True, show_progress=True, sound=True):flags = 0if not confirm: # 提示框flags |= shellcon.SHERB_NOCONFIRMATIONif not show_progress: # 删除进度flags |= shellcon.SHERB_NOPROGRESSUIif not sound: # 完成提示音flags |= shellcon.SHERB_NOSOUNDshell.SHEmptyRecycleBin(None, None, flags) recyclebin_empty(False, False, False)
定义一个函数,设置默认会显示清空回收站提示框,显示进度及删除完提示音。两个函数相结合可以实现姿势一
的操作过程。
总结
本文通过几种姿势,对需要删除的文件进行删除操作,纯分享个人感悟,删除文件基本是有手就行,之前使用电脑偶然抽风,直接使用shutil.rmtree
进行删除偶有卡顿,原以为这种删除方式很慢,遂上网搜索了一番,而后用pathlib
模块却能够快速删除,正当我想分享此事时,我重启电脑再次运行,发现shutil.rmtree
能较快删除,经几次测试,shutil.rmtree
相比pathlib
删除速度较快,为何那时删除时间较长原因未知。
此山中烟雨,独留文人骚客。
2022.6.8留
S系列·删除文件夹的几种姿势相关推荐
- Mac终端删除文件夹
Mac终端删除文件夹有两种情况:空文件夹&&非空文件夹 1.「空文件夹」:$ rmdir folderName 注:删除多个空文件夹的话只需要把文件夹之间用空格隔开 2.「非空文件夹」 ...
- java 中io的删除文件_总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇
本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力. 为了方便大家理解,我特意制作了本文对应的视频:总结删除文件 ...
- java 自动删除文件夹权限_总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇...
本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力.为了方便大家理解,我特意制作了本文对应的视频:总结删除文件或 ...
- python删除空文件和文件夹_python 两种方法删除空文件夹
第一种方法: import os def delete_gap_dir(dir): if os.path.isdir(dir): for d in os.listdir(dir): #print(&q ...
- 【转载】常用DOS命令(包括创建删除文件夹/文件)
https://www.cnblogs.com/chjb/articles/9393627.html 1.创建文件夹 我们可以使用 md 或mkdir 命令来创建,其中md和mkdir都是建立新目录m ...
- dos 删除文件夹 rd
windows普通方法删除不了文件.文件夹?那么试试dos命令吧. rd的另外一个写法是rmdir,源自ReMakeDirectory.使用的方法也很简单:rd 文件夹名 即可,例如:rd test. ...
- C++ 创建文件夹的四种方式
在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥.因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: ...
- linux 下删除文件夹(文件夹不为空时)
方法一: rmdir folderName // 说明:这指适合在folder为空的时候 方法二: rm -rf folderName //推荐使用,说明: -r 向下递归,不管多少级目录,一并 ...
- 删除文件夹下所有的文件_VB删除文件和文件夹的方法
在VB编程中,我们如何删除一个指定的文件,或者文件夹呢? 本文,介绍两种方法,详细的介绍如何实现删除文件和文件夹,并对两种方法的区别做一个说明. 一.删除文件的方法 方法1: 使用kill方法删除文件 ...
最新文章
- mongodb 查询 mysql_MongoDB 基本查询使用
- java adt mac_Mac下搭建Eclipse Android开发环境
- Linux 最常用命令:简单易学,但能解决 95% 以上的问题
- python声明_【瞎折腾-03】在Python里面写类型“声明”
- 小括号教学设计导入_2020年小学教师资格证复习资料之小学课堂教学导入-教师吧...
- Fiddler (一) 教程(Web调试工具)
- pandas中DataFrame对象to_csv()方法中的encoding参数
- 【YII】常用代码积累
- 关于getX()getY()就可以获取到位置,找不到方法问题
- 有道词典词库_最好的免费词典和同义词库程序和网站
- dnf mysql数据库密码,MYSQL8在CentOS8环境中的安装过程(DNF/YUM)
- 太平洋车险条款 太平洋保险 条款 中国保险机动车交通事故责任强制保险条款 中国保险行业协会机动车综合商业保险示范条款 中国太平洋财产保险股份有限公司神行车保机动车损失保险(IACJQL0001)条款
- 咻咻验证码,见证百合网发展壮大!
- python面试题(面试重点)
- JavaScript——ES8新特性
- 个人支付宝支付系统 ---- 获取账单信息
- 魔兽名字前不显示服务器,服务器公布,角色名定制《魔兽世界》怀旧服未上先爆...
- Redis的数据结构(全)
- 根据年份提取dblp内容
- Java物流项目第十天 TMS司机端、快递员端开发