How to Read a File in Python

Learn the simplest ways to open and read a file in Python. This page focuses on reading text files safely, understanding what each method returns, and avoiding common beginner mistakes.

Quick answer

with open("example.txt", "r") as file:
    content = file.read()

print(content)

Use with open(...) so Python closes the file automatically after reading.

What this page helps you do

  • Open a text file
  • Read the whole file at once
  • Read one line at a time
  • Choose the right reading method
  • Avoid common file-reading errors

The simplest way to read a file

The most common way to read a text file in Python is:

with open("example.txt", "r") as file:
    content = file.read()

print(content)

How this works

  • open("example.txt", "r") opens the file in read mode
  • with ... as file: makes sure the file is closed automatically
  • file.read() reads the entire file and returns it as one string

When to use this

This is a good choice for small text files when you want all content at once.

For a deeper explanation of open(), see Python open() function explained.

Understand the main reading methods

Python gives you a few main ways to read from a file.

file.read()

read() returns the entire file as one string.

with open("example.txt", "r") as file:
    content = file.read()

print(content)
print(type(content))

Possible output:

Hello
World
<class 'str'>

Use this when:

  • The file is small
  • You want the complete contents at once

file.readline()

readline() returns one line from the file each time you call it.

with open("example.txt", "r") as file:
    first_line = file.readline()
    second_line = file.readline()

print(first_line)
print(second_line)

If the file contains:

Apple
Banana
Cherry

Then the variables will contain:

  • first_line"Apple\n"
  • second_line"Banana\n"

Notice the \n at the end. That is the newline character.

file.readlines()

readlines() returns a list of all lines.

with open("example.txt", "r") as file:
    lines = file.readlines()

print(lines)

Possible output:

['Apple\n', 'Banana\n', 'Cherry\n']

Use this only if you specifically need a list of lines.

Looping over the file

Looping over the file is often the best choice for larger files.

with open("example.txt", "r") as file:
    for line in file:
        print(line.strip())

This reads one line at a time instead of loading the whole file into memory.

How to read a file line by line

A for loop is usually the simplest way to read a file line by line.

with open("example.txt", "r") as file:
    for line in file:
        print(line)

Why this is useful

  • It works well for larger files
  • It is easy to read
  • It avoids loading the whole file at once

About the newline character

Each line usually ends with \n. That means print(line) may leave extra blank lines in the output.

To remove the newline, use strip():

with open("example.txt", "r") as file:
    for line in file:
        print(line.strip())

If you want to understand strip() better, see Python string strip() method.

For a full line-by-line guide, see how to read a file line by line in Python.

How file paths affect reading

The path you give to open() matters.

Relative path

A relative path depends on your current working folder.

with open("example.txt", "r") as file:
    print(file.read())

This works only if example.txt is in the current working directory.

Absolute path

An absolute path gives the full location of the file.

with open("/home/user/example.txt", "r") as file:
    print(file.read())

On Windows, it may look like this:

with open(r"C:\Users\YourName\example.txt", "r") as file:
    print(file.read())

If the path is wrong

If the file name, folder, or extension is wrong, Python raises FileNotFoundError.

To learn more, see working with file paths in Python and how to check if a file exists in Python.

What the read mode means

When you write:

open("example.txt", "r")

the "r" means:

  • Open the file for reading
  • Read it as text
  • The file must already exist

This page focuses on text files. If you are learning the basics of file handling more broadly, see Python file handling basics.

Common beginner mistakes

Here are some common problems when reading files:

  • Using the wrong file path
  • Trying to read a file that does not exist
  • Forgetting that read() returns a string
  • Reading once and expecting the cursor to reset automatically
  • Using readlines() when a simple loop would be easier

Example: read() returns a string

with open("example.txt", "r") as file:
    content = file.read()

print(content.upper())

This works because content is a string.

Example: the file position does not reset automatically

with open("example.txt", "r") as file:
    first = file.read()
    second = file.read()

print("First read:", first)
print("Second read:", second)

The second read() usually returns an empty string because the file cursor is already at the end.

Basic debugging steps

If file reading does not work, try these checks:

  • Print the file path you are trying to open
  • Check your current working directory
  • Confirm the file really exists
  • Read a small test file first
  • Watch the exact error message

Useful commands:

print(open("example.txt", "r").read())
import os
print(os.getcwd())
import os
print(os.path.exists("example.txt"))

Common causes include:

  • Misspelled file name
  • Wrong folder or relative path
  • Trying to open a missing file
  • Confusing text files with CSV or JSON-specific tasks
  • Using the file after it has already been closed

If Python says the file does not exist, read FileNotFoundError: No such file or directory fix.

FAQ

What is the easiest way to read a file in Python?

Use with open("file.txt", "r") as file: and then call file.read().

How do I read a file one line at a time?

Open the file with with open(...) as file: and loop with for line in file:.

Why does Python say FileNotFoundError?

Python cannot find the file at the path you gave. Check the file name, folder, and current working directory.

Should I use read() or readlines()?

Use read() for the whole file as one string. Use a loop for line-by-line reading. Use readlines() only when you specifically need a list of all lines.

See also