Wie man prüft, ob eine Datei in Python existiert

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie in Python mithilfe verschiedener Methoden prüfen können, ob eine Datei existiert. Das Lab beginnt mit einer Einführung in Dateipfade und erklärt den Unterschied zwischen absoluten und relativen Pfaden. Sie erstellen eine Beispieltextdatei und ein Python-Skript, um zu zeigen, wie Sie das aktuelle Arbeitsverzeichnis abrufen und sowohl relative als auch absolute Pfade zur Datei definieren können.

Anschließend werden Sie durch die Verwendung der Funktion os.path.exists() und des Objekts pathlib.Path geführt, um die Existenz einer Datei zu überprüfen. Diese Methoden bieten zuverlässige Möglichkeiten, festzustellen, ob eine Datei existiert, bevor Sie versuchen, aus ihr zu lesen oder in sie zu schreiben, und verhindern so potenzielle Fehler in Ihren Python-Programmen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/PythonStandardLibraryGroup -.-> python/os_system("Operating System and System") subgraph Lab Skills python/build_in_functions -.-> lab-559511{{"Wie man prüft, ob eine Datei in Python existiert"}} python/importing_modules -.-> lab-559511{{"Wie man prüft, ob eine Datei in Python existiert"}} python/standard_libraries -.-> lab-559511{{"Wie man prüft, ob eine Datei in Python existiert"}} python/file_operations -.-> lab-559511{{"Wie man prüft, ob eine Datei in Python existiert"}} python/os_system -.-> lab-559511{{"Wie man prüft, ob eine Datei in Python existiert"}} end

Einführung in Dateipfade

In diesem Schritt werden wir das Konzept der Dateipfade in Python untersuchen. Das Verständnis von Dateipfaden ist entscheidend für das Lesen aus und Schreiben in Dateien sowie für die Navigation in Ihrem Dateisystem innerhalb Ihrer Python-Programme.

Ein Dateipfad ist im Wesentlichen die Adresse einer Datei oder eines Verzeichnisses auf Ihrem Computer. Es gibt zwei Haupttypen von Dateipfaden:

  • Absolute Pfade: Diese Pfade geben den vollständigen Speicherort einer Datei oder eines Verzeichnisses an, beginnend vom Root-Verzeichnis Ihres Dateisystems. Beispielsweise könnte auf einem Linux-System ein absoluter Pfad so aussehen: /home/labex/project/my_file.txt.
  • Relative Pfade: Diese Pfade geben den Speicherort einer Datei oder eines Verzeichnisses relativ zu Ihrem aktuellen Arbeitsverzeichnis an. Wenn Ihr aktuelles Arbeitsverzeichnis beispielsweise /home/labex/project ist, würde der relative Pfad my_file.txt auf dieselbe Datei verweisen wie der absolute Pfad /home/labex/project/my_file.txt.

Beginnen wir damit, eine einfache Textdatei in Ihrem ~/project-Verzeichnis mithilfe des VS Code-Editors zu erstellen. Erstellen Sie eine neue Datei mit dem Namen my_file.txt und fügen Sie den folgenden Inhalt hinzu:

Hello, LabEx!
This is a test file.

Speichern Sie die Datei im ~/project-Verzeichnis.

Jetzt erstellen wir ein Python-Skript, um mit dieser Datei zu interagieren. Erstellen Sie eine neue Datei mit dem Namen file_paths.py im gleichen ~/project-Verzeichnis und fügen Sie den folgenden Code hinzu:

import os

## Get the current working directory
current_directory = os.getcwd()
print("Current working directory:", current_directory)

## Define a relative path to the file
relative_path = "my_file.txt"
print("Relative path:", relative_path)

## Define an absolute path to the file
absolute_path = os.path.join(current_directory, relative_path)
print("Absolute path:", absolute_path)

In diesem Skript:

  • Wir importieren das os-Modul, das Funktionen für die Interaktion mit dem Betriebssystem bereitstellt.
  • Wir verwenden os.getcwd(), um das aktuelle Arbeitsverzeichnis zu erhalten.
  • Wir definieren einen relativen Pfad zur Datei my_file.txt.
  • Wir verwenden os.path.join(), um das aktuelle Arbeitsverzeichnis und den relativen Pfad zu kombinieren und einen absoluten Pfad zu erstellen.

Jetzt führen wir das Skript aus. Öffnen Sie Ihr Terminal in VS Code und navigieren Sie zum ~/project-Verzeichnis (standardmäßig sollten Sie bereits dort sein). Führen Sie dann das Skript mit dem folgenden Befehl aus:

python file_paths.py

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Current working directory: /home/labex/project
Relative path: my_file.txt
Absolute path: /home/labex/project/my_file.txt

Dies zeigt, wie man das aktuelle Arbeitsverzeichnis erhält und sowohl relative als auch absolute Dateipfade in Python erstellt. Das Verständnis dieser Konzepte ist grundlegend für die Arbeit mit Dateien und Verzeichnissen in Ihren Python-Programmen.

Verwendung von os.path.exists()

In diesem Schritt lernen wir, wie wir die Funktion os.path.exists() verwenden können, um zu prüfen, ob eine Datei oder ein Verzeichnis existiert. Dies ist eine grundlegende Operation bei der Arbeit mit Dateien, da es Ihnen ermöglicht, Fälle zu behandeln, in denen eine Datei fehlen oder ein Verzeichnis nicht vorhanden sein könnte.

Die Funktion os.path.exists() nimmt ein einzelnes Argument entgegen: den Pfad zur Datei oder zum Verzeichnis, das Sie überprüfen möchten. Sie gibt True zurück, wenn die Datei oder das Verzeichnis existiert, und False sonst.

Ändern wir das file_paths.py-Skript, das wir im vorherigen Schritt erstellt haben, um os.path.exists() zu verwenden. Öffnen Sie die Datei file_paths.py in Ihrem VS Code-Editor und fügen Sie den folgenden Code hinzu:

import os

## Get the current working directory
current_directory = os.getcwd()

## Define a relative path to the file
relative_path = "my_file.txt"

## Define an absolute path to the file
absolute_path = os.path.join(current_directory, relative_path)

## Check if the file exists using the relative path
if os.path.exists(relative_path):
    print("The relative path 'my_file.txt' exists.")
else:
    print("The relative path 'my_file.txt' does not exist.")

## Check if the file exists using the absolute path
if os.path.exists(absolute_path):
    print("The absolute path", absolute_path, "exists.")
else:
    print("The absolute path", absolute_path, "does not exist.")

## Check if a directory exists
directory_path = current_directory
if os.path.exists(directory_path):
    print("The directory", directory_path, "exists.")
else:
    print("The directory", directory_path, "does not exist.")

## Check if a non-existent file exists
non_existent_file = "non_existent_file.txt"
if os.path.exists(non_existent_file):
    print("The file", non_existent_file, "exists.")
else:
    print("The file", non_existent_file, "does not exist.")

In diesem Skript:

  • Wir verwenden os.path.exists(), um zu prüfen, ob die Datei my_file.txt existiert, sowohl mit dem relativen als auch mit dem absoluten Pfad.
  • Wir prüfen auch, ob das aktuelle Verzeichnis existiert, was immer der Fall sein sollte.
  • Schließlich prüfen wir, ob eine nicht existierende Datei existiert, was False zurückgeben sollte.

Jetzt führen wir das Skript erneut aus. Öffnen Sie Ihr Terminal in VS Code und führen Sie das Skript mit dem folgenden Befehl aus:

python file_paths.py

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

The relative path 'my_file.txt' exists.
The absolute path /home/labex/project/my_file.txt exists.
The directory /home/labex/project exists.
The file non_existent_file.txt does not exist.

Dies zeigt, wie man os.path.exists() verwendet, um die Existenz von Dateien und Verzeichnissen in Ihren Python-Programmen zu überprüfen. Dies ist ein entscheidender Schritt, bevor Sie versuchen, aus einer Datei zu lesen oder in sie zu schreiben, da es Fehler vermeiden und sicherstellen kann, dass Ihr Programm wie erwartet funktioniert.

Überprüfung mit pathlib.Path

In diesem Schritt werden wir das pathlib-Modul untersuchen, das eine objektorientierte Möglichkeit bietet, mit Dateien und Verzeichnissen zu interagieren. Wir werden uns speziell darauf konzentrieren, pathlib.Path zu verwenden, um die Existenz von Dateien und Verzeichnissen zu überprüfen, was eine Alternative zu os.path.exists() darstellt.

Das pathlib-Modul bietet einen moderneren und intuitiveren Ansatz zur Manipulation von Dateipfaden im Vergleich zum älteren os.path-Modul. Es repräsentiert Dateipfade als Objekte, sodass Sie verschiedene Operationen mithilfe der Methoden dieser Objekte ausführen können.

Ändern wir das file_paths.py-Skript, an dem wir gearbeitet haben, um pathlib.Path zu verwenden. Öffnen Sie die Datei file_paths.py in Ihrem VS Code-Editor und fügen Sie den folgenden Code hinzu:

import os
from pathlib import Path

## Get the current working directory
current_directory = os.getcwd()

## Define a relative path to the file
relative_path = "my_file.txt"

## Define an absolute path to the file
absolute_path = os.path.join(current_directory, relative_path)

## Create Path objects for relative and absolute paths
relative_path_obj = Path(relative_path)
absolute_path_obj = Path(absolute_path)

## Check if the file exists using the relative path object
if relative_path_obj.exists():
    print("The relative path 'my_file.txt' exists (using pathlib).")
else:
    print("The relative path 'my_file.txt' does not exist (using pathlib).")

## Check if the file exists using the absolute path object
if absolute_path_obj.exists():
    print("The absolute path", absolute_path, "exists (using pathlib).")
else:
    print("The absolute path", absolute_path, "does not exist (using pathlib).")

## Check if a directory exists using pathlib
directory_path_obj = Path(current_directory)
if directory_path_obj.exists():
    print("The directory", current_directory, "exists (using pathlib).")
else:
    print("The directory", current_directory, "does not exist (using pathlib).")

## Check if a non-existent file exists using pathlib
non_existent_file = "non_existent_file.txt"
non_existent_path_obj = Path(non_existent_file)
if non_existent_path_obj.exists():
    print("The file", non_existent_file, "exists (using pathlib).")
else:
    print("The file", non_existent_file, "does not exist (using pathlib).")

In diesem Skript:

  • Wir importieren die Path-Klasse aus dem pathlib-Modul.
  • Wir erstellen Path-Objekte für sowohl den relativen als auch den absoluten Pfad zu my_file.txt.
  • Wir verwenden die exists()-Methode der Path-Objekte, um zu prüfen, ob die Datei existiert.
  • Wir prüfen auch die Existenz des aktuellen Verzeichnisses und einer nicht existierenden Datei mithilfe von pathlib.

Jetzt führen wir das Skript erneut aus. Öffnen Sie Ihr Terminal in VS Code und führen Sie das Skript mit dem folgenden Befehl aus:

python file_paths.py

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

The relative path 'my_file.txt' exists (using pathlib).
The absolute path /home/labex/project/my_file.txt exists (using pathlib).
The directory /home/labex/project exists (using pathlib).
The file non_existent_file.txt does not exist (using pathlib).

Dies zeigt, wie man pathlib.Path als Alternative zu os.path.exists() verwenden kann, um die Existenz von Dateien und Verzeichnissen zu überprüfen. Das pathlib-Modul bietet eine objektorientiertere und oft lesbarere Möglichkeit, mit Dateipfaden in Python zu interagieren.

Zusammenfassung

In diesem Lab haben wir zunächst das Konzept von Dateipfaden in Python untersucht und zwischen absoluten und relativen Pfaden unterschieden. Wir haben gelernt, dass absolute Pfade den vollständigen Speicherort einer Datei angeben, während relative Pfade den Speicherort relativ zum aktuellen Arbeitsverzeichnis festlegen.

Anschließend haben wir eine Textdatei namens my_file.txt und ein Python-Skript file_paths.py erstellt, um zu zeigen, wie man das aktuelle Arbeitsverzeichnis mit os.getcwd() ermittelt und wie man sowohl relative als auch absolute Pfade zur erstellten Datei mithilfe des os-Moduls definiert.