In this article, we will cover how to delete (remove) files and directories in Python. Python provides different methods and functions for removing files and directories. One can remove the file according to their need.
Various methods provided by Python are –
Deleting file/dir using the os.remove() method
OS module in Python provides functions for interacting with the operating system. All functions in the os module raise OSError in the case of invalid or inaccessible file names and paths, or other arguments that have the correct type but are not accepted by the operating system.
os.remove() method in Python is used to remove or delete a file path. This method can not remove or delete a directory. If the specified path is a directory then OSError will be raised by the method.
Syntax of os.remove()
Syntax: os.remove(path, *, dir_fd = None)
Parameter: path: A path-like object representing a file path. A path-like object is either a string or bytes object representing a path.
- dir_fd (optional): A file descriptor referring to a directory. The default value of this parameter is None. If the specified path is absolute then dir_fd is ignored.
Note: The ‘*’ in parameter list indicates that all following parameters (Here in our case ‘dir_fd’) are keyword-only parameters and they can be provided using their name, not as positional parameter.
Return Type: This method does not return any value.
Example 1: Delete a File in Python
Suppose the file contained in the folder are:
We want to delete file1 from the above folder. Below is the implementation.
Python3
import os
file = 'file1.txt'
location = "D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil/"
path = os.path.join(location, file )
os.remove(path)
|
Output:
Example 2: Remove file with absolute path
If the specified path is a directory.
Python3
import os
dir = "Nikhil"
location = "D:/Pycharm projects/GeeksforGeeks/Authors/"
path = os.path.join(location, dir )
os.remove(path)
print ( "% s has been removed successfully" % dir )
|
Output:
Traceback (most recent call last):
File "osremove.py", line 11, in
os.remove(path)
IsADirectoryError: [Errno 21] Is a directory: 'D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil'
Example 3: Check if File Exists Before Deleting
Handling error while using os.remove() method.
Python3
import os
path = 'D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil'
try :
os.remove(path)
print ( "% s removed successfully" % path)
except OSError as error:
print (error)
print ( "File path can not be removed" )
|
Output:
[Errno 21] Is a directory: 'D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil'
File path can not be removed
Note: To know more about os.remove() click here.
Deleting file/dir using the os.rmdir() method
os.rmdir() method in Python is used to remove or delete an empty directory. OSError will be raised if the specified path is not an empty directory.
Syntax of os.rmdir()
Syntax: os.rmdir(path, *, dir_fd = None)
Parameter:
- path: A path-like object representing a file path. A path-like object is either a string or bytes object representing a path.
- dir_fd (optional): A file descriptor referring to a directory. The default value of this parameter is None. If the specified path is absolute then dir_fd is ignored.
Note: The ‘*’ in parameter list indicates that all following parameters (Here in our case ‘dir_fd’) are keyword-only parameters and they can be provided using their name, not as positional parameter.
Return Type: This method does not return any value.
Example 1: Delete all directories from a Directory
Suppose the directories are –
We want to remove the directory Geeks. Below is the implementation.
Python3
import os
directory = "Geeks"
parent = "D:/Pycharm projects/"
path = os.path.join(parent, directory)
os.rmdir(path)
|
Output:
Example 2: Error Handling while deleting a directory
Handling errors while using os.rmdir() method,
Python3
import os
directory = "GeeksforGeeks"
parent = "D:/Pycharm projects/"
path = os.path.join(parent, directory)
try :
os.rmdir(path)
print ( "Directory '% s' has been removed successfully" % directory)
except OSError as error:
print (error)
print ( "Directory '% s' can not be removed" % directory)
|
Output:
[WinError 145] The directory is not empty: 'D:/Pycharm projects/GeeksforGeeks'
Directory 'GeeksforGeeks' can not be removed
Note: To know more about os.rmdir() click here.
Deleting file/dir using the shutil.rmtree()
shutil.rmtree() is used to delete an entire directory tree, a path must point to a directory (but not a symbolic link to a directory).
Syntax of shutil.rmtree()
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.
- onerror: If ignore_errors is false or omitted, such errors are handled by calling a handler specified by onerror.
Delete a directory and the files contained in it.
Example 1:
Suppose the directory and sub-directories are as follow.
# Parent directory:
# Directory inside parent directory:
# File inside the sub-directory:
Example: Delete all Files from a Directory
We want to remove the directory Authors. Below is the implementation.
Python3
import shutil
import os
location = "D:/Pycharm projects/GeeksforGeeks/"
dir = "Authors"
path = os.path.join(location, dir )
shutil.rmtree(path)
|
Output:
Example 2: Ignore error while deleting a directory
By passing ignore_errors = True.
Python3
import shutil
import os
location = "D:/Pycharm projects/GeeksforGeeks/"
dir = "Authors"
path = os.path.join(location, dir )
shutil.rmtree(path, ignore_errors = False )
|
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: Exception handler
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 implementation
Python3
import shutil
import os
def handler(func, path, exc_info):
print ( "Inside handler" )
print (exc_info)
location = "D:/Pycharm projects/GeeksforGeeks/"
dir = "Authors"
path = os.path.join(location, dir )
shutil.rmtree(path, onerror = handler)
|
Output:
Inside handler (, FileNotFoundError(2, ‘The system cannot find the path specified’), ) Inside handler (, FileNotFoundError(2, ‘The system cannot find the file specified’), )
Deleting file/dir using the pathlib.Path(empty_dir_path).rmdir()
An empty directory can also be removed or deleted using the pathlib module’s rmdir() method. First, we have to set the path for the directory, and then we call the rmdir() method on that path
Syntax of pathlib.Path
Syntax: pathlib.Path(empty_dir_path).rmdir()
Parameter:
- empty_dir_path: A path-like object representing a empty directory path. A path-like object is either a string or bytes object representing a path.
Return Type: This method does not return any value.
Example: Delete an Empty Directory using rmdir()
In this example, we will delete an empty folder, we just need to specify the folder name if it is in the root Directory
Python3
import pathlib
empty_dir = r "Untitled Folder"
path = pathlib.Path(empty_dir).rmdir()
print ( "Deleted '%s' successfully" % empty_dir)
|
Output:
Deleted 'Untitled Folder' successfully
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...