We can copy a file in Python using different methods under the below-mentioned modules,
In this tutorial, we are going to learn using the different methods provided by the above modules to copy a file in Python.
1. shutil Module to Copy a File in Python
shutil module provides some easy to use methods using which we can remove as well as copy a file in Python. Let’s look at the different methods defined under this module specifically used for copying.
copyfileobj() method copies the content of the source file to the target file using their respective file objects. Let’s take a look at the code below,
import shutil src_file_obj=open('src.txt', 'rb') targ_file_obj= open('targ.txt' , 'wb') shutil.copyfileobj( src_file_obj , targ_file_obj )
Note: that the file objects should be pointing to the 0 positions (start position) for both the respective source and target files, to copy the entire content.
copyfile() method copies the content from the source to the target file using the file paths. It returns the target file path. The target file path must be writeable or else an OSerror exception would occur.
import shutil shutil.copyfile( 'src.txt' , 'targ.txt' )
It is to be kept in mind, that the method only allows the use of file paths and not directories.
This method copies the source file to the target file or the target directory. Unlike
copyfile(), the method
copy() allows the use of the target directory as an argument and also copies the file permissions.
copy() returns the path to the target file after copying the contents.
import shutil shutil.copy('/Users/test/file.txt', '/Users/target/')
A file named ‘file.txt’ is created in the target destination with all the content and permissions copied from ‘/Users/test/file.txt’.
copy2() method is used exactly the same way as of the
copy() method. They also function in the same way, except for the fact that
copy2() also copies the meta-data from the source file.
import shutil shutil.copy2('/Users/test/file.txt', '/Users/target/')
2. os Module to Copy a File in Python
popen() method creates a pipe to the command, cmd. The method returns a file object connected to the cmd pipe. Take a look at the code below,
#for Windows import os os.popen('copy src.txt targ.txt' )
#for Linux import os os.popen('cp src.txt targ.txt' )
With this method, not only can we copy files but also execute other regular commands.
system() method directly calls and executes a command argument in a subshell. Its return value depends on the OS that runs the program. For Linux, it is the exit status, whereas for Windows it is the return value by the system shell.
#for Linux import os os.system(' cp src.txt targ.txt' )
#for Windows import os os.system(' copy src.txt targ.txt' )
3. subprocess Module to Copy a File in Python
call() method similar to
os.system() directly calls or runs the command passed as an argument to the function.
# In Linux import subprocess subprocess.call('cp source.txt target.txt', shell=True)
# In Windows import subprocess subprocess.call('copy source.txt target.txt', shell=True)