Python comes with an inbuilt module,
shutil
that provides many methods for high-level file operations. It also provides a
move()
method that can move files and directories from one location to another on our computer. Often writing
a program
, we encounter situations where we wish to move files or directories from one location to another.
For example, let's say we are creating a python program that reads multiple files, and based on the data on those files, we wish to move them into specific locations. Here the Python's
shutil.move()
comes in play. This inbuilt method allows us to move a file or directory from a specific location to another location in our system only, so we can move files and directories using the python program. And in this tutorial, we will discuss this method in detail, so let's get started.
Python shutil module
shutil is an inbuilt python module that offers myriad methods to manage files and directories in a system using the python programming language. Although different operating systems have different file management systems, but all those operating systems that support Python also support shutil, so we don't have to worry about the operating systems while working with shutil.
Python move file
With the
shutil.move()
method we can move files and directories within our computer system. The move() method can accept three arguments, where the first two arguments and mandatory and the third argument is optional.
Syntax
move(source, destination, copy_function = copy2)
arguments source : It is a string value that represents the file or directory path that we want to move.
destination: It is also a string value that represents the directory path where we want to move our file or directory.
copy_function:
It is an optional callback argument that accepts a function as an argument value. By default, its value is
copy2
, which is also a method of shutil that can copy data as well as metadata of the file.
The path value for the source and destination arguments can be absolute or relative. In the absolute path value, we specify the complete path from the root directory. In the relative path, we specify the path location from the directory where our Python file is located.
Facts about
shutil.move()
method:
-
The
shutil.move()
method returns the destination path where the file is moved. - If the source file or directory already exists in the destination directory, the shutil.move() method would raise the "shutil.Error: Destination path already exists" error.
-
The
shutil.move()
method will useos.rename()
method to move the file if the destination directory is the current working directory where the python file is located.
Python Move file Examples
Let's write some code in Python that can move files from one location to another.
Move a file in Python
Let's say we have downloaded a picture
logo.png
from the internet, and it is stored in our downloads directory, and we want to move it to our game folder directory with other game resources.
import shutil # source file path with the full file name source = r'C:\Users\tsmehra\Downloads\logo.png' # destination path where we want to move the file destination = r'C:\Users\tsmehra\Desktop\code\game folder' # move the file print("The file has been moved to:" , shutil.move(source, destination))
Output
The file has been moved to: C:\Users\tsmehra\Desktop\code\game folder
The above example will move the file
logo.png
from the source
Downloads
directory to the destination
game folder
directory. In this example, I have provided the absolute path of the source file and destination directory and also specified paths as a raw string by putting
r
as a prefix to both the strings. With raw string, we do not have to worry about escape characters in python, and wherever you provide an absolute path, I always suggest using raw string instead of a normal Python string.
Move a file and change its name
In the above example, we simply move the file from one location to another, and when we move it, the name of the file remains the same. But if we wish to change the file name when it is moved to the destination directory, we can append the new name to the destination path. And when the file is moved to the destination, its name will be changed to the new specified name.
Example
Suppose we have a
picture.png
file in our Downloads folder, and we want to move it to our
game folder
directory as
snake-picture.png
how would we do that?
import shutil # source file path with the full file name source = r'C:\Users\tsmehra\Downloads\picture.png' # destination path and the new file name destination = r'C:\Users\tsmehra\Desktop\code\game folder\snake-picture.png' # move the file print("The file has been moved to:" , shutil.move(source, destination))
Output
The file has been moved to: C:\Users\tsmehra\Desktop\code\game folder\snake-picture.png
Move Multiple file
The
shutil.move()
method can only move one file at a time. If we wish to move multiple files, then we need to use a loop that iterates over multiple files and moves them to the specified location.
Suppose we have multiple
.txt
and
.pdf
file in a directory, and we wish to move all the
.txt
files in the
text
directory and
.pdf
files to the
document
directory. For this, we first need to list out all the files present in the source directory, loop over them, check for the
.txt
and
.pdf
files and move them to specified directories. To list out all the files present in a directory, we can take the help of the
os.listdir()
method that returns a list of file names present in the directory.
Example
import shutil import os # source directory source = r'C:\Users\tsmehra\Downloads' # all files present in the source directory files = os.listdir(source) #pdf file destination directory pdf_destination = r'C:\Users\tsmehra\Desktop\code\documents' # text file destination directory txt_destination = r'C:\Users\tsmehra\Desktop\code\text' for file in files: # check for the txt file if file.endswith('.txt'): # move the .txt file shutil.move(rf'{source}\{file}', txt_destination) print("Moved txt file....") #check for pdf files if file.endswith('.pdf'): # move the .pdf file shutil.move(rf'{source}\{file}', pdf_destination) print("Moved pdf file....")
Output
Moved txt file.... Moved pdf file.... Moved txt file....
Conclusion
In this Python tutorial, we learned how to move files using the Python programming language. Python's shutil modules provide a move() method that allows us to move one file or directory from one location to another. With the
move()
method we can only move one file or directory at a time for moving multiple files or directories, we can take the help of loops.
To know more about how to manage files in Python click here .
People are also reading:
- Python List Methods: All you need to Know
- Remove duplicates from a Python list
- Python COPY File and Directory Using shutil
- How to Find all files in a Directory with specific extension in Python?
- Python File I/O
- How to Convert Python Files into Executables Standalone File?
- Python Rename File: A Complete Guide
- Read File in Python
- How to Download Files in Python?
- How to Encrypt and Decrypt Files in Python?
Leave a Comment on this Post