Skip to main content

How to Check if a File is Empty in Python

Determining if a file is empty is a common task in file handling.

This guide explores several methods to check if a file is empty in Python, covering techniques using os.stat(), os.path.getsize(), and pathlib.Path(), as well as error handling for non-existent files.

Checking File Emptiness with os.stat()

The os.stat() method provides file status information including size. To check if a file is empty, check if the st_size attribute of the returned object is equal to 0:

import os

if os.stat('example.txt').st_size == 0:
print('The file is empty')
else:
print('The file is not empty')
  • The os.stat() function returns a stat_result object which has a st_size attribute representing the size in bytes.

You can use either a relative or absolute path to the file, as in the following example:

import os
if os.stat(
'/home/tomnolan/Desktop/python_example/example.txt'
).st_size == 0:
print('The file is empty')
else:
print('The file is not empty')

1. Checking if a File is Not Empty

Use the not equals (!=) operator to check if a file is not empty:

import os

if os.stat('example.txt').st_size != 0:
print('The file is NOT empty')

2. Handling FileNotFoundError

The os.stat() method raises a FileNotFoundError if the file does not exist. Use a try/except block to handle this:

import os

try:
if os.stat('not-found.txt').st_size == 0:
print('The file is empty')
except FileNotFoundError:
print('The specified file does NOT exist')

Checking File Emptiness with os.path.getsize()

The os.path.getsize() method directly returns a file's size in bytes. If the size is 0, then the file is empty:

import os
# Using relative path
if os.path.getsize('example.txt') == 0:
print('The file is empty')
else:
print('The file is NOT empty')

# Using absolute path
if os.path.getsize(
'/home/tomnolan/Desktop/python_example/example.txt'
) == 0:
print('The file is empty')
else:
print('The file is NOT empty')

1. Handling OSError

os.path.getsize() will raise an OSError exception if the path is invalid or the file does not exist or is not accessible. Handle this with a try/except block:

import os
try:
if os.path.getsize('not-found.txt') == 0:
print('The file is empty')
except OSError:
print('The specified file does NOT exist')

2. Checking File Existence with os.path.exists()

Before checking the size, use os.path.exists() to verify that the file exists:

import os

my_path = '/home/tomnolan/Desktop/python_example/example.txt'

if os.path.exists(my_path) and os.path.getsize(my_path) == 0:
print('The file is empty')
else:
print('The file does NOT exist or is not empty')
  • The os.path.exists() method returns True if the file exists and False otherwise.

Checking File Emptiness with pathlib.Path()

The pathlib module provides a more object-oriented approach to file system interactions. You can check if a file is empty using Path.stat():

import pathlib

my_path = pathlib.Path(
'/home/tomnolan/Desktop/python_examples/example.txt'
)

if my_path.stat().st_size == 0:
print('The file is empty')
else:
print('The file is NOT empty')
  • The pathlib.Path() function instantiates a Path object that represents a path.
  • The my_path.stat().st_size will get the file’s size, like using os.stat().

Handling FileNotFoundError

The Path.stat() method raises a FileNotFoundError if the path does not exist. Use a try/except block to handle this exception:

import pathlib

my_path = pathlib.Path(
'/home/tomnolan/Desktop/python_example/example.txt'
)

try:
if my_path.stat().st_size == 0:
print('The file is empty')
else:
print('The file is NOT empty')
except FileNotFoundError:
print('The file does NOT exist')