Delete an entire directory tree using Python | shutil.rmtree() method

Shutil module in Python provides many functions of high-level operations on files and collections of files. It comes under Python’s standard utility modules. This module helps in automating the process of copying and removal of files and directories.

shutil.rmtree() is used to delete an entire directory tree, path must point to a directory (but not a symbolic link to a directory).

Syntax: shutil.rmtree(path, ignore_errors=False, onerror=None)

Parameters:
path: A path-like object representing a file path. A path-like object is either a string or bytes object representing a path.
ignore_errors: If ignore_errors is true, errors resulting from failed removals will be ignored.
oneerror: If ignore_errors is false or omitted, such errors are handled by calling a handler specified by onerror.

Example 1: Suppose the directory and sub-directories are as follow.



# Parent directory:

python shutil.rmtree()

# Directory inside parent directory:

python shutil.rmtree()

# File inside the sub-directory:

python shutil.rmtree()

We want to remove the directory Authors. Below is the implementation.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to demonstrate 
# shutil.rmtree() 
    
import shutil 
import os 
    
# location 
location = "D:/Pycharm projects/GeeksforGeeks/"
    
# directory 
dir = "Authors"
    
# path 
path = os.path.join(location, dir
    
# removing directory 
shutil.rmtree(path) 

chevron_right


Output:



python shutil.rmtree()

Example 2: By passing ignore_errors = False.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to demonstrate 
# shutil.rmtree() 
    
import shutil 
import os 
    
# location 
location = "D:/Pycharm projects/GeeksforGeeks/"
    
# directory 
dir = "Authors"
    
# path 
path = os.path.join(location, dir
    
# removing directory 
shutil.rmtree(path, ignore_errors = False
    
# making ignore_errors = True will not raise  
# a FileNotFoundError 

chevron_right


Output:

Traceback (most recent call last):
File “D:/Pycharm projects/gfg/gfg.py”, line 16, in
shutil.rmtree(path, ignore_errors=False)
File “C:\Users\Nikhil Aggarwal\AppData\Local\Programs\Python\Python38-32\lib\shutil.py”, line 730, in rmtree
return _rmtree_unsafe(path, onerror)
File “C:\Users\Nikhil Aggarwal\AppData\Local\Programs\Python\Python38-32\lib\shutil.py”, line 589, in _rmtree_unsafe
onerror(os.scandir, path, sys.exc_info())
File “C:\Users\Nikhil Aggarwal\AppData\Local\Programs\Python\Python38-32\lib\shutil.py”, line 586, in _rmtree_unsafe
with os.scandir(path) as scandir_it:
FileNotFoundError: [WinError 3] The system cannot find the path specified: ‘D:/Pycharm projects/GeeksforGeeks/Authors’

Example 3: By passing onerror.
In onerror a function should be passed which must contain three parameters.

  • function: function which raised the exception.
  • path: path name passed which raised the exception while removal
  • excinfo: exception info raised by sys.exc_info()

Below is the implementaton.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to demonstrate 
# shutil.rmtree() 
    
import shutil 
import os 
    
    
# exception handler 
def handler(func, path, exc_info): 
    print("Inside handler"
    print(exc_info) 
    
    
# location 
location = "D:/Pycharm projects/GeeksforGeeks/"
    
# directory 
dir = "Authors"
    
# path 
path = os.path.join(location, dir
    
# removing directory 
shutil.rmtree(path, onerror = handler) 

chevron_right


Output:

Inside handler
(, FileNotFoundError(2, ‘The system cannot find the path specified’), )
Inside handler
(, FileNotFoundError(2, ‘The system cannot find the file specified’), )




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.