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

第三十五节 文件删除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),敬请期待~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值