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 "", line 1, in 
  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 "l", line 1, in 
  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)

python全栈编程

笨鸟工具,python全栈

实例代码解析:

如上代码的运行输出环境为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 os.removedirs()方法,递归删除多级目录

你可能感兴趣的:(python,开发语言)