学了python的文件操作后发现,python删除不为空的文件夹会报错,需要先把文件夹里面的东西全部删掉,如果里面还有非空的文件夹,还要把它里面的东西全部删除掉,非常麻烦,琢磨了一下,觉得可以用递归简化这个问题.
代码如下:
import os
# cwd是当前的目录
def delete(cwd):
#改变默认目录(跳到cwd目录下)
os.chdir(cwd)
os.getcwd()
# 代码os.listdir()将目录下所有的文件夹和文件生成一个列表
list1 = os.listdir()
# 如果列表是空的,就返回
if not list1:
return
# 如果不为空,就遍历列表进行删除
else:
for i in list1:
# 文件会被os.remove(i)操作删除,文件夹便会出现异常,进而执行except下面的操作
try:
os.remove(i)
except:
# 如果文件夹是空的,会的正常删除,否则出现异常,进而执行except下面的操作
try:
os.rmdir(i)
except:
# 将非空的文件夹递归,删除它里面的所有东西
delete(i)
# 文件夹为空后,删除该文件夹
os.rmdir(i)
# 删除掉一个文件夹里面的所有东西后,要返回上一次目录
os.chdir('../')
# 以nn文件夹为例,进行调试
delete('nn')
最后也是成功删除一个文件夹里面的所有文件夹和文件