How do you append to a file in Python?

Problem Statement: How do you append to a file without overwriting it?

Related Article: Correct Way to Write line To File in Python

Introduction

Solving our problem requires us to know the different file operations that can be performed in Python. Here’s the order in which file operations are performed in Python:

  1. Opening the file. πŸ“–
  2. Reading from the file or writing to the file. ✍🏻
  3. Closing the file. πŸ“•

When a file is opened, we can specify the mode in which the file will be opened, i.e., text mode or binary mode. We can also specify whether we want to read a file, write to a file or append to a file. The following table illustrates the different modes available at our disposal while dealing with a file:

  • r β†’ Will open a file in the read mode. (default)
  • w β†’ Will open the file in write mode. It will create a new file if it does not exist or truncate it if it already exists.
  • x β†’ Will open the file for exclusive creation. If it already exists, the operation will fail.
  • a β†’ Will open the file for appending text/values at its end without truncating it. Otherwise, a new file is created if the file does not exist.
  • t β†’ Will open the file in text mode. (default)
  • b β†’ Will open the file in binary mode.
  • + β†’ Will open the file with updation options. (read and write)

Thus, while reading or writing to a file, access modes govern the type of operations performed on the file. On top of handling the operations, they also control the “file handle” in a file. Simply put, a file handle is a cursor that determines the location in the file from where the data will be read or written in the file. 

Appending Data to a File

To append data to a file, you have to open it in the append mode with the help of ‘a’ or ‘a+’ access mode. We already learned previously – “a” will allow us to open the file for appending data (continuing to write data without re-rewriting the file from the beginning) to the file. In contrast, “a+” will perform both – file reading and writing. 

Note: When you open the file in append mode, the file handle will be positioned at the end of this file so that the new data being written is entered from the end after the existing data. 

Consider the following pre-existing file:

append to a file

Code to append to the file:

my_file = open("data.txt", "a")  # file opened in append mode
# appending data to the file
my_file.write(" This is a new sentence! ")
my_file.close()  # closing the file

Output:

append data to file in Python

Explanation: The entire process of appending to a file can be described in three simple steps:

  1. Open the file in append mode.
  2. Append the new data to the file using the write() method.
  3. Close the file.

Here are a few frequently asked related questions:

β–ΊHow to Append Data to a New Line in a File?

The easiest approach to write data to a new line in a file is to open the file using the open() method along with the with statement. Basically, the process of writing a new line to a file includes the following steps.

  1. Create a list consisting of the new texts to be appended to the file as elements within it.
  2. Open the file in append mode using the with statement.
  3. Use a loop to iterate through each item/data stored in the list.
  4. Move the file handler to a new line using “\n" escape sequence.
  5. Write each data from the list into the file one by one.

Example: In the following snippet, we will open a pre-existing file named β€˜data.txtβ€˜ (as used in the above case) and append two new lines of text in it.

append to a file
Fig: Pre-existing File

Code to append data to a new line:

lines = ['Hello Finxter!', 'I hope you are enjoying this lesson.']
# Opening the file in append mode
with open('data.txt', 'a') as f:
    for line in lines:
        f.write('\n') # moving file handler to new line
        f.write(line) # appending the text required

Output:

appending to a new line

Note: The advantage of using the with statement to open the file is that you don’t have to worry about things like closing the file. It automatically closes the file once the operation is complete.

β–Ί How to Append a New Row to an Old CSV file?

The solution to this problem is pretty straightforward. All you have to do is open the csv file in append mode using the “a” access mode within your open() file method.

These are the steps involved in writing a new row to a csv file:

  1. Import the csv module.
  2. Store the new row data in a list.
  3. Open the file in append mode.
  4. Create the csv writer.
  5. Use the writer.writerow() method to append the new row to the file.

Example: Consider the following pre-existing csv file.

append to csv pre existing csv file

Code to append new row:

import csv
lines = ['Think and Grow Rich', ' Napoleon Hill']
# Opening the file in append mode
f = open('data.csv', 'a')
# creating the csv writer
writer = csv.writer(f)
# write the row to your csv
writer.writerow(lines)

Output:

append to a csv file in Python

Note: In order to write more than one row, you can use the writerows method as shown below.

import csv
books = [
    ['The Autobiography of Benjamin Franklin', 'Benjamin Franklin'],
    ['The Story of My Experiments with Truth', 'Mahatma Gandhi'],
    ['Undisputed Truth', 'Larry Sloman and Mike Tyson'],
]
# Opening the file in append mode
with open('data.csv', 'a', newline='') as f:
    # creating the csv writer
    writer = csv.writer(f)
    # write the row to your csv
    writer.writerows(books)

Output:

Conclusion

Phew! We have unearthed the answers to lots of questions in this article. We learned how to append to a file in Python, how to append a new line to a file and how to append a new row and more than one row to a csv file. I hope this has equipped you well enough to deal with appending data to files in Python.

Here’s a list of highly recommended articles to strengthen your understanding of file handling in Python –