第三十五节 文件删除Delete a File

  • 前言
  • 实践

前言

我们这一节来介绍如何删除一个文件,这里需要用到函数os.remove(path)用于删除指定路径下的文件,os.rmdir(path)用于删除指定路径下的空文件夹,shutil.rmtree(path)用于删除指定路径下的文件夹及其子文件夹。

实践

我们先来学习删除一个文件,这里同样以之前用到的lyric.txt为例进行展示:

import os
path = r"C:\Users\shen_student\Desktop\lyric.txt"
os.remove(path)

可见该文件被删除了,那么如果我们删除一个不存在的文件会发生什么呢?我们将上述代码再运行一次,会发现程序报错了:

>>> FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\Users\\shen_student\\Desktop\\lyric.txt'

他告诉你找不到指定的文件,这里我们可以用Python的异常相关知识避免程序遇到异常时中断执行:

import os
path = r"C:\Users\shen_student\Desktop\lyric.txt"
try:os.remove(path)
except FileNotFoundError:print("That file was not found")
else:print(path + " was deleted")

我们运行上述代码,发现当指定文件不存在时会打印That file was not found,当文件存在时会打印C:\Users\shen_student\Desktop\temp.txt was deleted。
那么我们是否可以用os.remove(path)这个函数删掉一个空文件夹呢?我们新建一个空文件夹命名为temp,然后执行代码:

import os
path = r"C:\Users\shen_student\Desktop\temp"
try:os.remove(path)
except FileNotFoundError:print("That file was not found")
else:print(path + " was deleted")

会发现程序报错了,错误信息为:

>>> PermissionError: [WinError 5] 拒绝访问。: 'C:\\Users\\shen_student\\Desktop\\temp'

也即无法访问这个路径,这是因为os.remove(path)只能删除文件,不能删除文件夹,如果我们想删除文件夹,需要用到os.rmdir(path)这个函数:

import os
path = r"C:\Users\shen_student\Desktop\temp"
try:os.rmdir(path)
except FileNotFoundError:print("That file was not found")
else:print(path + " was deleted")

我们执行上述代码会发现空文件夹已经被成功删除并打印C:\Users\shen_student\Desktop\temp was deleted。如果再执行一次便会打印That file was not found,因为此时文件夹已经不存在了,所以他会抛出异常信息,也即文件不存在。如果我们文件夹还包含子文件时,用上述代码删除文件夹会发生什么呢?
我们在temp文件夹下新建temp文件夹,然后执行上述代码:

>>> OSError: [WinError 145] 目录不是空的。: 'C:\\Users\\shen_student\\Desktop\\temp'

发现程序报错了,告诉你文件夹不是空的,这是因为os.rmdir(path)只能删除空文件夹,如果要删除包含子文件的文件夹,我们需要用到函数shutil.rmtree(path)。并且,我们也可以用异常处理机制避免上述异常中断:

import os
import shutil
path = r"C:\Users\shen_student\Desktop\temp"
try:shutil.rmtree(path)
except FileNotFoundError:print("That file was not found")
except PermissionError:print("You do not have permission to delete that")
except OSError:print("You cannot delete that using that fuction")
else:print(path + " was deleted")
>>> C:\Users\shen_student\Desktop\temp was deleted

可以发现文件夹已经被成功删除了。

以上便是文件删除的全部内容,感谢大家的收藏、点赞、评论。我们下一节将介绍模块(Modules),敬请期待~

Python编程基础:第三十五节 文件删除Delete a File相关推荐

  1. Python编程基础:第二十五节 args参数*args

    第二十五节 args参数*args 前言 实践 前言 我们目前学习到的函数的参数个数都是固定的,那么我们是否可以指定任意多个参数呢?其实是可以的,这里就用到了args参数,它可以将用户指定的任意多个参 ...

  2. Python编程基础:第十五节 二维列表2D Lists

    第十五节 二维列表2D Lists 前言 实践 前言 列表中的元素可以是任何形式,整型.浮点型.字符串型,甚至是一个列表.当列表的元素也是列表时,我们将其称为二维列表. 实践 我们先来创建多个一维列表 ...

  3. Python编程基础:第三十四节 文件移动Move a File

    第三十四节 文件移动Move a File 前言 实践 前言 当我们需要将一个文件/文件夹移动到另一个指定路径时,就需要用到shutil.move()函数,该函数需要指定两个参数shutil.move ...

  4. Python编程基础:第二十九节 异常Exception

    第二十九节 异常Exception 前言 实践 前言 我们在写代码时不可避免地会出错,这时候编译器便会抛出异常并中断程序的执行.针对这种情况,我们可以采用异常处理的方式捕捉程序中的异常信息,并将异常信 ...

  5. Python编程基础:第二十四节 作用域Scope

    第二十四节 作用域Scope 前言 实践 前言 在Python中每一个变量都有其自己的生命周期,我们一般将变量分为全局变量与局部变量,全局变量是指在整个代码内部都可以访问到的变量,局部变量是指只有在函 ...

  6. Python编程基础:第十九节 索引Index Operator

    第十九节 索引Index Operator 前言 实践 前言 我们在字符串学习过程中已经接触过索引的相关内容,我们在这里做一个小结,Python中的索引分为两部分,一种是从左向右,从0开始依次递增,例 ...

  7. Python编程基础:第二十六节 kwargs参数**kwargs

    第二十六节 kwargs参数**kwargs 前言 实践 前言 上一节我们尝试传入任意多的参数,我们这一节来学习传入任意多具有参数名称的参数.kwargs参数将用户传入的参数打包为字典传入函数中用于进 ...

  8. Python编程基础:第十六节 元组Tuple

    第十六节 元组Tuple 前言 实践 前言 我们这一节来学习一个与列表非常相似的数据结构--元组.需要注意的是元组定义好以后,其中的元素是不能改变的,并且所有元素是有序排列的, 实践 我们先来创建一个 ...

  9. Python编程基础:第十四节 列表Lists

    第十四节 列表Lists 前言 实践 前言 列表是一种非常常用的数据结构.我们可以用它来存储各种类型的数据. 实践 我们先来创建一个名为food的列表,里面存储了一系列我喜欢的食物名称: food = ...

最新文章

  1. 如何理解:先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法,即对于机器数为负数,则有[X]原=[[X]补]补。
  2. ci框架——辅助函数
  3. 第二次作业——小学生四则运算
  4. [转载]对称加密DES和TripleDES
  5. 金数据表单接口请求(php)
  6. Java程序员们最常犯的10个错误
  7. 安卓版有道词典的离线词库-《21世纪大英汉词典》等
  8. 《麦肯锡方法》第2章探索分析问题的方法-思维导图
  9. 诗词大全给力版_思维导图 | 6种高效记忆法,教你速背古诗词!
  10. 匈牙利算法【匹配问题】
  11. SharePoint Online 触发的Automate工作流的调试
  12. Android开发之内容提供者——创建自己的ContentProvider(详解)
  13. C语言函数题-输入多个单词,统计以指定字母开头的单词个数
  14. 自动激活win7系统的bat文件
  15. 八键电话号码的字母组合
  16. 解决小米10上 Google Play 卡在正在等待下载,以及从服务器检索信息时出错。DF-DFERH-01的问题
  17. pandas pandas中stack()与unstack()函数用法
  18. element之el-scrollbar
  19. 【微信小程序】上传文件到阿里云OSS
  20. 开场舞蹈 #普及组#

热门文章

  1. win10安装java1.8开发环境JDK
  2. leetcode 739. 每日温度 单调栈解法和暴力法及其优化 c代码
  3. 文件服务器 双机,文件服务器双机备份
  4. vue 组件属性监听_Vue.js 监听属性
  5. matlab产生时间数组以月为单位_Matlab中处理日期与时间的函数
  6. python做方差分析和卡方检验
  7. FFMpeg的基本用法
  8. C#中的值类型和引用类型
  9. mysql range用法_MySQL的常用函数
  10. 远程服务器php环境搭建,免费网站搭建与phpstorm远程部署