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