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 #

Press Esc to close