FileNotFoundError: [Errno 2] No such file or directory

When utilizing the "open()" function in Python to access a file with the name "filename.ext," you are implicitly indicating that the file is located within the current working directory. This file path notation is referred to as a relative path, meaning it is expressed in relation to the current location of the Python script or the working directory from where the script is executed.

Relative paths provide a convenient way to access files within the same directory or in subdirectories, simplifying file management and organization. By understanding the concept of relative paths, developers can effectively work with files and directories in Python, ensuring accurate file access and manipulation while adhering to professional coding practices.

file = open('filename.ext') //relative path

In the above code, the "open()" function is being used with only the file name, which constitutes a relative path. However, the resulting error "FileNotFoundError: [Errno 2] No such file or directory" indicates that the file with that name does not exist in the current working directory.

To resolve this issue, consider using the complete, or absolute path to the file instead of just its name. The absolute path specifies the file's precise location within the file system, allowing Python to locate the file accurately regardless of the working directory. By utilizing the absolute path, you can prevent the FileNotFoundError and ensure seamless file access in your Python code, adhering to standard and professional coding practices.

file = open(r'C:\path\to\your\filename.ext') //absolute path

In the above code, all of the information needed to locate the file is contained in the path string - absolute path.

There is a prevalent misconception regarding relative paths in Python, often assuming that they are relative to the location of the Python script. However, this is not accurate. Relative file paths are actually determined with respect to the current working directory, which might not necessarily coincide with the location of the Python script.

The current working directory denotes the directory from which the Python script is executed or the active directory in the command prompt or terminal session. Thus, using relative paths in Python involves referencing files based on their positions relative to the current working directory, regardless of where the Python script is located. This distinction is crucial to understanding and correctly managing file paths in Python, contributing to professional coding practices and enhanced file handling within the language.

Other reasons?

There are several other reasons why the FileNotFoundError Errno 2 No such file or directory error can occur:

  1. Misspelled filename

There may be times when your filename will have been misspelled. In such a case, the file you specified will not exist in the current directory. So, recheck your filename.

  1. Accidentally using escape sequences in a file path
path = 'C:\Users\neo\filename.ext'

Above code throws error because the '\n' in 'Users\neo' is a line break character.

To avoid making this mistake, remember to use raw string literals for file paths.

path = r'C:\Users\neo\filename.ext'
  1. Forgetting that Windows doesn't display file extensions

Since Windows doesn't display known file extensions, sometimes when you think your file is named "myFile.yaml", it's actually named "myFile.yaml.yaml". So, double-check your file's extension.

How to avoid FileNotFoundError: [Errno 2] No such file or directory?

  1. Make sure the file exists

Use os.listdir() to see the list of files in the current working directory.

  1. Use an absolute path to open the file
file = open(r'C:\path\to\your\filename.ext') //absolute path
  1. Raw String Literals

Remember to use a raw string literals if your path uses backslashes.

dir = r'C:\path\to\your\filename.ext'
  1. Change the current working directory before opening the file
import os os.chdir(r'C:\path\to\your\file') file = open('filename.ext')

python file not found error

Relative Path Vs. Absolute Path

A file is distinguished and accessed through its path within the file system, which can be either an absolute or a relative path.

An absolute path denotes the file's location with respect to the root directory and encompasses the entire directory structure required to locate the file. For instance, "C:\path\to\your\filename.ext" exemplifies an absolute path, encapsulating all the information necessary for precise file localization. On the other hand, a relative path is referenced from the current directory and necessitates concatenation with another path to access the file. For instance, "your\filename.ext" denotes a relative path.

However, a relative path alone lacks sufficient information to reliably locate a specific directory in the file system, and hence, it necessitates additional context to access the desired file accurately. Understanding the distinction between absolute and relative paths is vital in navigating and manipulating files within Python, promoting professionalism in file handling and augmenting the efficiency and accuracy of file operations in the language.


The "FileNotFoundError: [Errno 2] No such file or directory" error indicates that the file or directory being referenced in the code does not exist in the specified location. It commonly occurs when using a relative file path, and the file is not present in the current working directory or the path provided is incorrect. To resolve this error, ensure that the file or directory exists at the specified location or use the correct absolute or relative path to access the desired file.