In this tutorial, we are going to learn how to read a file in Python 3. After we have learned how to open a file in Python, we are going to learn how to write to the file and save it again. In previous posts, we have learned how to open a range of different files using Python. For instance, we have learned how to open JSON, CSV, Excel, and HTML files using Pandas, and the json library. Here, however, we are going to open plain files (.txt) in Python.
Table of Contents
- Prerequisites
- Reading Files in Python
- How to Read a File in Python using the open() function
- Creating a Text file and Writing to the File using Python
- How to Read a Text File in Python using open()
- Reading a File in Python and Appending Content to It
- How to Read a file in Python using the with Statement
- Splitting Words in File and Counting Words
- Reading other File Formats in Python
- Conclusion: Reading & Writing Files in Python
- Python Resources
Prerequisites
In this Python tutorial, we need to have Python 3 installed. One of the easiest ways to install Python is to download a Python distribution, such as Anaconda, ActivePython, or Enthought Canopy, to name a few. Here’s a YouTube tutorial on how to install Anaconda.
Reading Files in Python
Now, when we are working with Python, there is no need to import a library to read and write files. Reading and writing files, in Python, is handled natively in the language.
In this post, we will, thus, focus on using Python to open a file and we will use the built-in open function to get a file object. We are focusing on reading text files but here are two tutorials on reading other file formats:
- Your Guide to Reading Excel (xlsx) Files in Python
- How to Read and Write JSON Files using Python and Pandas
Python’s File Object
When we use Python’s open function, it will return something known as a file object. These objects will contain methods and attributes that we can use to gather information about the file we have opened (much like we’ve learned when using Pandas dataframe objects, for instance). One neat thing, of course, is that we can use these methods to change the file we have opened using Python.
In this Python read from a file tutorial, we are going to work with the mode attribute. This attribute will tell us which mode the file we have opened, using Python, is in. Furthermore, the name attribute will give us the name of the file we opened in Python (i.e., the file object’s name).
Opening and reading a file in Python is straightforward: we type ourfile = open(‘PATH_TO_FILE’)and then ourfile.read().
Now, if we open a file in Python the read() returns a Python string object.
How to Read a File in Python using the open() function
In this section, we will learn how to load a file in Python using the open() function. In it’s simplest example, open() will open a file and create a file object.
As can be seen, in the image above, there are a couple of arguments that can be used, however, when opening a file using Pythons open() function. The most commonly used arguments, however, are the first two. Note, the first is mandatory and the rest of them are optional. If we don’t add a mode, the file will be opened in read-only mode in Python.
Using the mode argument when reading files in Python
In this section, of the post on how to read a file in Python, we will go through the different modes in which we can read a file. As previously mentioned, if we don’t pass anything with the mode argument the file will be written in read-only. In this reading files in Python tutorial, we are going to work with the following modes:
That is, we can open a file in read-only, write, append, and read and write mode. If we use append (‘a’) we will append information at the end of that file.
A Simple Read a File in Python Example
Now, we are going to read a file in Python using only the file name as an argument. As evident, in the code example below, open() takes a string with the file path as input. In this reading a file in Python example, it is assumed that the example file is in the same directory as the Python script. Or in this case, the Jupyter notebook.
# Reading and printing a file in Python:
exfile = open('example_file')
print(exfile)
Code language: Python (python)
In the image, above, it becomes evident that we have a file object that we have opened in read-only mode. To iterate what we did, we opened up the text file (example_file.txt) without any other arguments. This, in turn, leads to that the file was opened in the read mode. Thus, we cannot write to that file. If we want to print the name of the file we can just type print(exfile.name)
.
Creating a Text file and Writing to the File using Python
In the next how to read a file in Python example, we are going to create a file using Python open(). Now, we are going to use open with the write mode. That is, we are going to open a file object and then use the file objects write method.
# Creating a file in Python:
exfile = open('example_file2', 'w')
print(exfile)
Code language: Python (python)
Writing to the File:
Now, in the image above, we can see that we have a file object in write mode (‘w’). In the next code chunk, we are going to add one line of text to this file, Here is how to write a line to our created file:
# Writing a line to our file:
exfile.write('This is example file 2 \n')
Code language: Python (python)
If we want to, we can, of course, add more lines by using the write method again:
# Writing a second line to the file:
exfile.write('Line number 2, in example file 2')
exfile.close()
Code language: Python (python)
Note, how we closed the file using close() in the last line above. In the image, below, we can see the example file we have created with Python.
How to Read a Text File in Python using open()
In the next Python read a file example, we will learn how to open a text (.txt) file in Python. This is, of course, simple and we have basically already the knowledge on how to do this with Python. That is if we just want to read the .txt file in Python we can use open and the read mode:
# Python read .txt file:
txtfile = open('example_file.txt')
Code language: Python (python)
Opening a File in Python: read() Example:
This was simple. Now, if we want to print the content of the text file we have three options. First, we can use the read() method. This Python method will read the entire file. That is, txtfile.read()
will give us the following output:
Reading a File to a Python list: readlines() Example:
If we, on the other hand, want to read the content from a file to a Python list, we can use the readlines() method. That is if we want to read the text file into a list we type:
# Read the .txt file:
txtfile = open('example_file.txt')
# Reading the lines into a Python list:
print(txtfile.readlines())
Code language: Python (python)
Reading Specific Lines:
Furthermore, we can also use the sizehint argument. This enables us to get certain lines. For example, the following code will read the two first lines, into two different string variables, and print it:
# Opening a file:
txtfile = open('example_file.txt')
# Reading a line:
line = txtfile.readlines(1)
print(line)
# Reding another line:
line2 = txtfile.readlines(2)
print(line2)
Code language: Python (python)
Finally, when we have opened a file in Python we can also loop through the content and print line by line:
txtfile = open('example_file.txt')
for line in txtfile:
print(line)
Code language: Python (python)
Reading a File in Python and Appending Content to It
In the next example, we are going to read a file in Python and append information to the file. More specifically, we are going to load a .txt file using Python and append some data to it. Again, we start by opening the file in Python using open() but using the append mode:
open('example_file2.txt', 'a')
Code language: JavaScript (javascript)
Appending Text to the File:
Next, we are going to add content to this using write(), again.
# Append a line to the file with Python:
txtfile.write('\n More text here.')
Code language: Python (python)
When appending text, in Windows 10 at least, we have to add the \n before the line or else this line will be appended next to the last character (on the last line, of the file). If we are to add more lines, we have to remember to do this as well;
# Appending a second lien to the file:
txtfile.write(‘\nLast line of text, I promise.)
# Remember to close the file!
txtfile.close()
Code language: Python (python)
Finally, we can open the text file using a text editor (e.g., Notepad, Gedit) and we’ll see the last two lines that we’ve added:
How to Read a file in Python using the with Statement
In the next how to open a file in Python example, we are going to read a file using the with statement. This has the advantage that we don’t have to remember to close the file and the syntax for using the with statement is clean to read:
with open('example_file2.txt') as txtfile2:
print(txtfile2.read())
Code language: Python (python)
ValueError: I/O operation on closed file
Now, if we try to use the read() method Python will throw a ValueError:
txtfile2.read()
Code language: CSS (css)
We get this ValueError because we used the with() statement while opening the file.
Splitting Words in File and Counting Words
As final reading a file in Python example, we are going to use the string split() method to split the sentences in the text file into words. When we have read the file and split the words, we are going to use the Counter subclass from collections to use Python to count words in an opened file.
from collections import Counter
with open('example_file2.txt') as txtfile2:
wordcount = Counter(txtfile2.read().split())
print(len(wordcount))
# Output: 43
Code language: Python (python)
Counting Words in Python
Now, the Counter subclass is giving us a dictionary that contains all words and occurrences of each word. Thus, we can print all words and their count like this:
for k in sorted(wordcount, key=wordcount.get, reverse=True):
print(k, wordcount[k])
Code language: Python (python)
In the code example above, we are looping through the keys in the dictionary and sort them. This way, we get the most common words on top. Of course, reading a file with many words, using Python, and printing the result like this is not feasible.
If we have the need it is, of course, also possible to rename a file (or multiple files) in Python using the os.rename() method.
Reading other File Formats in Python
Now, we have learned how to load a file in Python, and we will briefly discuss other file formats that Python can handle. Python can, of course, open a wide range of different file formats. In previous posts, we have used the json library to parse JSON files in Python, for instance. Furthermore, we have also learned how to read csv files in Python using Pandas, open Excel files with Pandas, among other file formats that are common for storing data.
- See here for some examples of file formats Python can read.
Conclusion: Reading & Writing Files in Python
In this tutorial, we learned the basics of opening files in Python. More specifically, we have learned how to read a file in different modes, create and write to a file, append data to a file, and how to read a file in Python using the with statement. In future posts, we will learn more about how to read other file formats using Python (e.g., CSV, Excel).
Comment below if you need anything covered in this or a future blog, and stay tuned!
Python Resources
- Python Check if File is Empty: Data Integrity with OS Module
- Find the Highest Value in Dictionary in Pythons
- How to use Python to Perform a Paired Sample T-test
- Python Scientific Notation & How to Suppress it in Pandas & NumPy
- How to Convert a Python Dictionary to a Pandas DataFrame