Working with files in Python
Python is an object-oriented high-level programming language. Python has dynamic semantics and has high-level built-in data structures which support dynamic typing and dynamic binding. Python provides rapid development.
It has an English-like syntax that is very easy to write and understand, reducing the maintenance cost. Python is an interpreted language which means that it uses an interpreter instead of the compiler to run the code.
The interpreted language is processed at the run time thus takes less time to run. Python also has third parties modules and libraries which encourage development and modifying the code.
Sometimes instead of working with data directly from the console or taking input from the console, we need to deal with a very large amount of data.
Sometimes we have to store the data into the disk since the output we create is volatile, so it gets destroyed when we close the program, and it is almost impossible to recover the data then. In these scenarios, File Handling comes handy.
With the use of File Handling, we can store the data permanently by saving it into files. We can implement File Handling in Python without importing any module separately. Python provides the ability to read, write and perform multiple operations on files.
Python provides an in-built function to read and write files, so it is simple to handle files in Python. We can handle two types of files in Python, which are:
- Text Files: These are the default text files. In these files, every line of the text is terminated with a special character called End of Line (EOL). It is '\n' by default in normal text files.
- Binary Files: These files do not have any End of Line characters, and the data is stored in binary language, which the machine understands.
Open File in Python
To open a file in Python, we can use an in-built function open(). We can open a file in different modes such as reading, writing, append and read and write etc. The open () function accepts two arguments which are the file name and the mode in which we want to open the file. Passing a file to the open function returns a file object. The syntax for the open() function is:
open(filepath, mode)
We can open a file in 5 modes in Python:
- Read-only (r): This is the default mode while opening the file. This permission is used to open files for reading. If the file does not exist, then it raises an error.
- Read and Write (r+): This mode opens the file for reading and writing. Raises an error if the file does not exist.
- Write only (w+): Write mode opens the file for writing only. It creates a new file if the file does not exist. If we open an existing file, then the data we write gets over-written to it.
- Append only (a): This mode opens the file for appending to the text. Creates the file if it does not exists. The cursor is placed at the end of the file and the data written is appended to the file.
- Append and Read (a+): This mode opens the file for reading and appending. It creates the file if not already exists.
Let us see the example of working of open function:
Suppose we have a file with the following content:

Use the below code to open the file:
file = open('sample3.txt', 'r') #opening a file with the read mode
for line in file:
print (line) #printing each line in the file
Output
The output will be the content of the file:
Quod equidem non reprehendo;
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quibus natura iure responderit non esse verum aliunde finem beate vivendi
a se principia rei gerendae peti; Quae enim adhuc protulisti, popularia sunt, ego autem a te elegantiora desidero.
Duo Reges: constructio interrete. Tum Lucius: Mihi vero ista valde probata sunt, quod item fratri puto. Bestiarum vero nullum iudicium puto.

If the file is lengthy and we want to read just some lines from that file, then we can use the file. Read () method and pass the number of how many characters we want to print.
file = open('sample3.txt', 'r') #opening a file with the read mode
print (file.read(100)
Output
The output will be the first 100 characters from the file.
Quod equidem non reprehendo;
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quibus natura

Writing in a File
After opening a file with the open() function, we get a file object returned by the open function. To write the text on the file, we can use the two functions available in this file object which are written () and write lines().
With the write() function, we can write a string to a file, and with the writelines() function, we can write multiple strings by using the list of strings in a file.
We can also pass iterable objects like tuples or a set of strings and not just a list to the writelines() function.
After writing a line in a file, we will need to add a new line character manually.
To add the new line character in a text file we can use the code below:
f.write('\n')
f.writelines('\n')
Writing Text files examples.
Writing using write() function
Below is the example of how we can use the write() function to write a string in a file in Python.
strings = ['Example 1', 'How to write strings in text file in Python']
with open('Example1.txt', 'w') as file:
for line in strings:
file.write(line)
file.write('\n')
Output
After running the above code, a new file called Example1.txt will be created with the following content:
Example1
How to write strings in the text file in Python

Note- If the Example1.txt already exists, this code will overwrite the strings to the original file.
Writing using write lines() function
write lines() function is used to write multiple lines in a text file using Python. Below is the code of using the writelines() function:
strings = ['Example2', 'How to write multiple text lines in file in Python']
with open('readme.txt', 'w') as file:
file.writelines(strings)
Output
The output of the above code will be:
Example2How to write multiple text lines in a file in Python

If we want to add every string in the list in a new line, we have to add the new line character in the code manually.
strings = ['Example 3', 'How to write multiple text lines in file in Python']
with open('readme.txt', 'w') as file:
file.writelines('\n'.join(strings))
Output
The output will be a text file with every string in a new line.
Example 3
How to write multiple text lines in a file in Python

As you can see, the write mode has overwritten the previous text in the file.
Appending Text File
Let us append some more lines to the file we created in Example 3. To append the strings in a file, we need to open the file with append permission. Let us see the code for appending strings:
multiple_lines = ['', 'Example 4', 'Append new lines']
with open('readme.txt', 'a') as file:
file.writelines('\n'.join(multiple_lines))
Output
After running the file, the list multiple_lines will get appended to the file readme.txt
Example 3
How to write multiple text lines in a file in Python
Example 4
Append new lines