python os.removedirs()方法,递归删除多级目录

os.removedirs()方法

os.removedirs()是python标准库os的方法,可以用来递归删除多级目录(什么是递归删除,该怎么理解,可参考下方实例代码及解析),注意,要删除的必须是空目录(空文件夹)。如果要删除的目录不存在,python将抛出FileNotFoundError。


os.removedirs()语法

os.removedirs( path )

提示:参数path指定removedirs()方法所要删除的目录。


os.removedirs()返回值

无返回值,但可以删除操作系统中的目录。


os.removedirs()实例代码

>>> import os
>>> path1 = 'Users/z/a/b'
>>> os.makedirs(path1)
>>> os.removedirs(path1) #1
>>> os.removedirs(path1) #2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/anaconda3/lib/python3.7/os.py", line 239, in removedirs
    rmdir(name)
FileNotFoundError: [Errno 2] No such file or directory: 'Users/z/a/b'
>>> os.removedirs('/Users/z/a')
Traceback (most recent call last):
  File "<stdin>l", line 1, in <module>
  File "/opt/anaconda3/lib/python3.7/os.py", line 239, in removedirs
    rmdir(name)
FileNotFoundError: [Errno 2] No such file or directory: '/Users/z/a'
>>> path2 = '/Users/z/a/c'
>>> os.makedirs(path1)
>>> os.makedirs(path2)
>>> os.removedirs(path1)
>>> os.removedirs(path2)

实例代码解析

如上代码的运行输出环境为Mac osx系统。

  • 通过makedirs()创建一个path1的目录,然后通过removedirs() #1进行删除,当第二次调用removedirs() #2删除path1目录时,python抛出FileNotFoundError,因为在第一次调用中删除了该目录,目录已经不存在。而且即便是要删除该目录的父目录'/Users/z/a',python也会抛出FileNotFoundError,因为递归删除了该目录,当删除b文件夹时,a文件夹也变成空的,因此也会被递归删除;
  • 之后又通过两次makedirs建立了不同的两个目录path1和path2,即在文件夹a之内又创建了一个c文件夹,也就是此时文件夹a之内有两个文件夹,所以当调用removedirs(path1)时,删除了文件夹b却不会像之前那样递归删除文件夹a,就是因为此时文件夹a中还有一个文件夹c,并不为空。

全栈后端 / Python库 :









Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.