Open In App

Python – Move and overwrite files and folders

Last Updated : 31 Aug, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will be learning on moving a collection of files and folders where there may be files/folders with the same name as in the source name in the destination. So that we may need to overwrite the existing destination file with the source file.

The shutil.move() method is used to move a file or directory from one place to another. If there is an existing directory or file in the destination which will be checked using os.path.isfile() and os.path.isdir() method, then it will be deleted using os.remove() method, and if it is a directory then it will be deleted using shutil.rmtree() method then the file will be moved.

Syntax:

shutil.move(source, destination, copy_function = copy2)

Parameters:

  • source: A string representing the path of the source file.
  • destination: A string representing the path of the destination directory.
  • copy_function (optional): The default value of this parameter is copy2. We can use other copy function like copy, copytree, etc for this parameter.

Return Value: This method returns a string which represents the path of newly created file.

Call shutil.move(source, destination) method by replacing source and destination by entire path in string format. Using the above method, the files with the same name will be overwritten with the file content as of the source file

Example 1: Program to move a folder containing a file using python.

Folder Hierarchy:

Desktop
     |_folder_
              |_Geeks folder
              |_test folder_gfg.txt

Python3




# importing os module
import os
 
# importing shutil module
import shutil
 
# path
path = 'C:/Users/KIIT/Desktop/folder'
 
# List files and directories
print("Before moving file:")
print(os.listdir(path))
 
 
# Assign source and destination
source = 'test folder'
destination = 'Geeks folder'
 
sourcePath = path+'/'+source
destinationPath = path+'/'+destination
 
# Check if file already exists
if os.path.isdir(destinationPath+'/'+source):
    print(source, 'exists in the destination path!')
    shutil.rmtree(destinationPath+'/'+source)
     
elif os.path.isfile(destinationPath+'/'+source):
    os.remove(destinationPath+'/'+source)
    print(source, 'deleted in', destination)
 
# Move the content
# source to destination
dest = shutil.move(sourcePath, destinationPath)
 
# List files and directories
print("After moving file:")
print(os.listdir(path))
 
print(source, 'has been moved!')
 
# Print new path of file
print("Destination path:", dest)


Output:

Example 2: Program to overwrite a folder containing a file using python.

Folder Hierarchy:

Desktop
     |_folder_
              |_Geeks folder_test folder_gfg.txt
              |_test folder_gfg.txt

Python3




# importing os module
import os
 
# importing shutil module
import shutil
 
# path
path = 'C:/Users/KIIT/Desktop/folder'
 
# List files and directories
print("Before moving file:")
print(os.listdir(path))
 
 
# Assign source and destination
source = 'test folder'
destination = 'Geeks folder'
 
sourcePath=path+'/'+source
destinationPath=path+'/'+destination
 
# Check if file already exists
if os.path.isdir(destinationPath+'/'+source):
        print(source,'exists in the destination path!')
        shutil.rmtree(destinationPath+'/'+source)
       
elif os.path.isfile(destinationPath+'/'+source):  
        os.remove(destinationPath+'/'+source)
        print(source,'deleted in',destination)
 
# Move the content
# source to destination
dest = shutil.move(sourcePath, destinationPath)
 
# List files and directories
print("After moving file:")
print(os.listdir(path))
 
print(source,'has been moved!')
 
# Print new path of file
print("Destination path:", dest)


Output:



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads