Open In App

Difference Between os.rename and shutil.move in Python

Last Updated : 25 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

When it comes to renaming or moving files and directories, two commonly used methods are os. rename and shutil. move. While both can serve the purpose of renaming and moving, they have distinct differences in terms of functionality and use cases. In this article, we will explore these differences and when to use each of them.

Difference Between os. rename and shutil. move in Python

Both os. rename and shutil. move are valuable tool in Python for renaming and moving files and directories. The choice between them depends on the complexity of your task and the specific requirements of your file manipulation operation.

When to Use os. rename and shutil.move:

Use of os.rename when:

  • You need to perform a basic rename operation within the same directory.
  • Atomicity is crucial for your operation.

Use of shutil.move when:

  • You need to move files or directories across different filesystems or devices.
  • You want to ensure destination directories are automatically created.
  • You need to handle the overwriting of existing files.
  • You want to preserve file metadata and attributes.

Examples for os.rename

Renaming a File

It will rename the file ‘old_file.txt’ to ‘new_file.txt’ and display a message indicating that the renaming process was successful.

Python3




import os
 
# Current file name
old_name = 'old_file.txt'
 
# New file name
new_name = 'new_file.txt'
 
# Rename the file
os.rename(old_name, new_name)
 
print(f"File '{old_name}' has been renamed to '{new_name}'.")


Output:

os. rename

File is renamed as GFG

Rename a Directory

It will rename the directory ‘old_directory’ to ‘new_directory’ and display a message indicating that the renaming process was successful.

Python3




import os
 
# Current directory name
old_dir = 'old_directory'
 
# New directory name
new_dir = 'new_directory'
 
# Rename the directory
os.rename(old_dir, new_dir)
 
print(f"Directory '{old_dir}' has been renamed to '{new_dir}'.")


Output:

Screenshot-2023-09-18-122411-(1)

Rename a Directory

Examples for shutil.move

Moving a File to a Different Directory

This code uses the shutil module to move a file from a source location to a destination directory. It first specifies the paths to the source file and the destination directory. Then, it calls shutil.move() with these paths to perform the move operation.

Python3




import shutil
 
# Source file path
source_file = 'source_directory/source_file.txt'
 
# Destination directory path
destination_directory = 'destination_directory/'
 
# Move the file to the destination directory
shutil.move(source_file, destination_directory)
 
print(f"File '{source_file}' has been moved to '{destination_directory}'.")


Output:

Screenshot-2023-09-18-114307

Moving a file to different directory

Handling Overwriting with shutil.move

This code uses the shutil library in Python to move a file from a source directory to a destination directory, potentially overwriting a file with the same name in the destination directory.

Python3




import shutil
 
# Source file path
source_file = 'source_directory/file.txt'
 
# Destination directory path
destination_directory = 'destination_directory/'
 
# Destination file path (same name as the source)
destination_file = 'destination_directory/file.txt'
 
# Move the file to the destination directory (overwrites if exists)
shutil.move(source_file, destination_file)
 
print(f"File '{source_file}' has been moved to '{destination_file
                                        }' (overwriting if necessary).")


Output:

Screenshot-2023-09-18-115947-(3)

Handling Overwriting with shutil.move



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads