ZetCode

Python read text

last modified October 23, 2022

In this article we show how to read text data in Python.

We can read text data in Python with the built-in open function or the pathlib module.

The Path.read_text reads the contents of the file as a string.

The open function is used to open files in Python.

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None)

The file is the name of the file to be opened. The mode indicates how the file is going to be opened: for reading, writing, or appending. The buffering is an optional integer used to set the buffering policy.

The encoding is the name of the encoding used to decode or encode the file. The errors is an optional string that specifies how encoding and decoding errors are to be handled. The newline controls the behaviour of the newline character.

The file modes are:

Mode Meaning
'r'open for reading (default)
'w'open for writing, truncating the file first
'a'open for writing, appending to the end of the file if it exists
'b'binary mode
't'text mode (default)
'+'updating (reading and writing)
'x'exclusive creation, failing if file exists

The default mode is the text mode.

words.txt
falcon
sky
book
sum
cup
cloud
water
win

We have this simple text file.

Python read text with read function

The read function reads at most size characters as a single string. If the size parameter is negative, it reads until EOF.

main.py
#!/usr/bin/python

with open('words.txt', 'r') as f:

    contents = f.read()
    print(contents)

The program reads the whole file and prints its contents.

with open('words.txt', 'r') as f:

We open the works.txt file in the read mode. Since we did not specify the binary mode, the file is opened in the default text mode. The function returns the file object f. The with statement simplifies exception handling by encapsulating common preparation and cleanup tasks; in addition, it automatically closes the opened file.

contents = f.read()

We call the file object's read function. Since we did not specify any parameter, it reads the whole file.

$ ./main.py
falcon
sky
book
sum
cup
cloud
water
win

In the next example, we explicitly specify the text mode.

main.py
#!/usr/bin/python

with open('words.txt', 'rt') as f:

    contents = f.read()
    print(contents)

The program reads the whole words.txt file.

Python read text with readline

The readline function reads until newline or EOF and return a single string. If the stream is already at EOF, an empty string is returned. If the size parameter is specified, at most size characters will be read.

main.py
#!/usr/bin/python

with open('words.txt', 'r') as f:

    line = f.readline()
    print(line.rstrip())

    line = f.readline()
    print(line.rstrip())

In the example, we read two lines from the file. The rstrip function cuts the trailing newline character from the string.

$ ./main.py
falcon
sky

Python read text with readlines

The readlines function reads and returns a list of lines from the stream.

main.py
#!/usr/bin/python

with open('words.txt', 'r') as f:

    lines = f.readlines()

    print(lines)

    for line in lines:

        print(line.strip())

In the example, we read the contents of the file with readlines. We print the list of the lines and then loop over the list with a for statement.

$ ./main.py
['falcon\n', 'sky\n', 'book\n', 'sum\n', 'cup\n', 'cloud\n', 'water\n', 'win']
falcon
sky
book
sum
cup
cloud
water
win

Python read text with for loop

Since the file object returned from the open function is a iterable, we can pass it directly to the for loop.

main.py
#!/usr/bin/python

with open('works.txt', 'r') as f:

    for line in f:

        print(line.rstrip())

The program iterates over the file object to print the contents of the text file.

$ ./main.py
falcon
sky
book
sum
cup
cloud
water
win

Python read text with Path.read_text

The Path.read_text function opens the file in text mode, reads it, and closes the file. It is a convenience function for easy reading of text. It should not be used for large files.

main.py
#!/usr/bin/python

from pathlib import Path

path = Path('words.txt')

content = path.read_text()
print(content)

The programs reads the whole text file into a string in one go.

$ ./main.py
falcon
sky
book
sum
cup
cloud
water
win

In this article we have showed how to read files in Python.

List all Python tutorials.