Open In App

Python Program to merge two files into a third file

Last Updated : 04 Aug, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Reading and writing to a file. Let the given two files be file1.txt and file2.txt. Our Task is to merge both files into a third file say file3.txt. The following are steps to merge in Python.

Note: To successfully run the below program file1.txt and file2.txt must exist in the same folder. Suppose the text files file1.txt and file2.txt contain the following data.

Program to Merge two files into New File

Below are the methods that we will cover in this article:

file1.txt

Python-file-handling-file1 file2.txt Python-file-handling-file2Naive Approach to merge two files into a third file

Open file1.txt and file2.txt in read mode then open file3.txt in write mode. Read the data from file1 and add it in a string. Read the data from file2 and concatenate the data of this file to the previous string then write the data from the string to file3 and close all the files

Python3




data = data2 = "";
 
# Reading data from file1
with open('file1.txt') as fp:
    data = fp.read()
 
# Reading data from file2
with open('file2.txt') as fp:
    data2 = fp.read()
 
# Merging 2 files
# To add the data of file2
# from next line
data += "\n"
data += data2
 
with open ('file3.txt', 'w') as fp:
    fp.write(data)


Output: Python-file-handling-file3

Program to merge two files into a third file using a for loop

The above approach can be shortened using for loop. Create a list containing filenames then open file 3 in write mode. Iterate through the list and open each file in read mode. Read the data from files and simultaneously write the data in file3 and close all the files.

Python3




# Creating a list of filenames
filenames = ['file1.txt', 'file2.txt']
 
# Open file3 in write mode
with open('file3.txt', 'w') as outfile:
 
    # Iterate through list
    for names in filenames:
 
        # Open each file in read mode
        with open(names) as infile:
 
            # read the data from file1 and
            # file2 and write it in file3
            outfile.write(infile.read())
 
        # Add '\n' to enter data of file2
        # from next line
        outfile.write("\n")


Output: Python-file-handling-file3

Program to merge two files into a third file using the Shutil module

In this method, we use the shutil.copyfileobj() function to copy the contents of file1.txt and file2.txt into the merged_file.txt. The function shutil.copyfileobj() efficiently copies data from one file object to another, which is useful for merging files without loading the entire contents into memory at once.

Python3




import shutil
 
def merge_files_with_shutil(file1, file2, merged_file):
    with open(merged_file, 'wb') as outfile:
        for filename in [file1, file2]:
            with open(filename, 'rb') as infile:
                shutil.copyfileobj(infile, outfile)
 
# Usage:
file1 = 'file1.txt'
file2 = 'file2.txt'
merged_file = 'merged_file.txt'
merge_files_with_shutil(file1, file2, merged_file)


Output:

Python-file-handling-file3

Program to merge two files into a third file using os module

The os module alone is not sufficient to merge files. We’ll need to use file handles to read and write data. Here’s the correct way to merge two files into a third file using the os module and file handles

Python3




import os
 
def merge_files_with_os(file1, file2, merged_file):
    with open(merged_file, 'w') as outfile:
        for filename in [file1, file2]:
            with open(filename, 'r') as infile:
                for line in infile:
                    outfile.write(line)
 
# Usage:
file1 = 'file1.txt'
file2 = 'file2.txt'
merged_file = 'merged_file.txt'
merge_files_with_os(file1, file2, merged_file)


Output:

Python-file-handling-file3



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads