Gelöst: Python FileNotFoundError [Errno 2] No such file or directory
Der Fehler FileNotFoundError: [Errno 2] No such file or directory ist einer der häufigsten Fehler in Python. Er tritt auf, wenn dein Skript versucht, auf eine Datei oder einen Ordner zuzugreifen, der an dem angegebenen Ort nicht existiert.
In diesem Tutorial lernst du die typischen Ursachen kennen und wie du das Problem Schritt für Schritt dauerhaft löst.
Der typische Fehlercode
Meistens entsteht der Fehler bei einfachen Operationen wie dieser:
with open("meine_daten.csv", "r") as datei:
inhalt = datei.read()
Wenn die Datei nicht exakt dort liegt, wo Python danach sucht, bricht das Programm ab:
FileNotFoundError: [Errno 2] No such file or directory: 'meine_daten.csv'
4 Schritte zur Lösung des Problems
Schritt 1: Tippfehler und versteckte Dateiendungen prüfen
Oft sind es die kleinen Dinge:
- Groß-/Kleinschreibung: Unter Linux und macOS wird strikt zwischen
datei.txtundDatei.TXTunterschieden. - Versteckte Dateiendungen (häufig unter Windows):
Windows blendet bekannte Dateiendungen oft standardmäßig aus. Wenn du deine Datei
meine_daten.csvgenannt hast, heißt sie im Hintergrund möglicherweisemeine_daten.csv.csvodermeine_daten.csv.txt.- Lösung: Aktiviere im Datei-Explorer unter Windows die Option Ansicht -> Dateinamenerweiterungen.
Schritt 2: Das aktuelle Arbeitsverzeichnis (CWD) überprüfen
Python sucht relative Pfade immer ausgehend vom aktuellen Arbeitsverzeichnis (Current Working Directory) und nicht zwingend von dem Ordner aus, in dem dein Python-Skript liegt!
Finde heraus, wo sich Python gerade befindet, indem du diesen Code ausführst:
import os
print("Aktuelles Verzeichnis:", os.getcwd())
Liegt deine Zieldatei in genau diesem ausgegebenen Ordner? Wenn nein, hast du die Fehlerquelle gefunden.
Schritt 3: Den Pfad richtig angeben (Relativ vs. Absolut)
Option A: Der absolute Pfad (am sichersten zum Testen)
Ein absoluter Pfad gibt den vollständigen Speicherort ausgehend vom Laufwerk bzw. Root an.
-
Unter Windows: Achte auf die Backslashes (
\). Nutze am besten einrvor dem String, um Escape-Sequenzen zu verhindern:pfad = r"C:\Benutzer\Name\Dokumente\meine_daten.csv" with open(pfad, "r") as datei: ... -
Unter macOS / Linux:
pfad = "/home/benutzer/dokumente/meine_daten.csv" with open(pfad, "r") as datei: ...
Schritt 4: Der Best-Practice-Weg (Die moderne Profilösung)
Die sauberste Methode ist die Verwendung des modernen pathlib-Moduls. Damit erstellst du Pfade, die immer relativ zum Python-Skript selbst sind – egal, aus welchem Verzeichnis heraus das Skript gestartet wird.
from pathlib import Path
# 1. Ermittelt den Ordner, in dem dieses Python-Skript liegt
skript_ordner = Path(__file__).resolve().parent
# 2. Verknüpft den Skript-Ordner mit dem Dateinamen
datei_pfad = skript_ordner / "meine_daten.csv"
# 3. Datei sicher öffnen
if datei_pfad.exists():
with open(datei_pfad, "r", encoding="utf-8") as datei:
print(datei.read())
else:
print(f"Datei wurde nicht gefunden unter: {datei_pfad}")
Vorteil: Dieser Code funktioniert plattformübergreifend auf Windows, Mac und Linux identisch.
Saubere Fehlerbehandlung (Exception Handling)
Wenn dein Programm auch dann stabil weiterlaufen soll, falls eine Datei einmal fehlt, fange den Fehler mit try-except ab:
dateiname = "daten.txt"
try:
with open(dateiname, "r") as f:
print(f.read())
except FileNotFoundError:
print(
f"Hinweis: Die Datei '{dateiname}' existiert nicht. Bitte erstelle sie zuerst."
)
Schnelle Checkliste zur Fehlerbehebung
Bevor du verzweifelst, gehe diese Liste durch:
- [ ] Stimmt der Name inklusive Groß-/Kleinschreibung?
- [ ] Hat die Datei versehentlich eine doppelte Endung (z.B.
.txt.txt)? - [ ] Entspricht
os.getcwd()dem Ordner, in dem die Datei liegt? - [ ] Hast du unter Windows Backslashes maskiert oder ein Raw-String-Präfix (
r"...") genutzt? - [ ] Nutzt du
pathlib, um flexibel auf Dateien im Skript-Ordner zuzugreifen?