Datei- und Ordnerverwaltung

PythonPythonBeginner
Jetzt üben

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

Einführung

Dieses Labor ist so konzipiert, dass es Ihnen hilft, zu verstehen, wie man mit Python Dateien und Ordner manipuliert. Wir werden die Module os und glob verwenden, die eine Möglichkeit bieten, mit der Dateisystem zu interagieren und übliche Operationen wie das Erstellen, Löschen und Verschieben von Dateien und Verzeichnissen durchzuführen.

Ziele

  • os-Modul
  • glob-Modul

Ordner und Dateien erstellen

Hier ist ein Python-Code, der mehrere Gruppen von Beispielordnern und -dateien erstellt:

import os

## Erstellen Sie mehrere Gruppen von Beispielordnern und -dateien
for i in range(3):
    ## Erstellen Sie für jede Gruppe einen neuen Ordner
    folder_name = "group_" + str(i)
    os.makedirs(folder_name)

    ## Erstellen Sie Beispiel-Dateien in jedem Ordner
    for j in range(3):
        file_name = "file_" + str(j) + ".txt"
        file_path = os.path.join(folder_name, file_name)
        with open(file_path, "w") as file:
            file.write("This is a sample file.")

Sie können create_samples.py im Editor öffnen und den Code ausführen, um die Ergebnisse zu sehen.

os.makedirs(path) ist eine Funktion aus dem os-Modul in Python, die ein Verzeichnis am angegebenen Pfad erstellt. In diesem Fall ist der path der folder_name, der durch Verkettung des Strings "group_" mit dem aktuellen Wert der i-Variablen aus der äußeren for-Schleife konstruiert wird, was zu "group_0", "group_1" und "group_2" führt.

os.path.join(path1, path2,...) ist eine Funktion aus dem os.path-Modul, die einen oder mehrere Pfade zusammenfügt. In diesem Fall ist path1 der folder_name und path2 der file_name, der durch Verkettung des Strings "file_" mit dem aktuellen Wert der j-Variablen aus der inneren for-Schleife konstruiert wird, was zu "file_0.txt", "file_1.txt" und "file_2.txt" führt. Die os.path.join()-Funktion wird verwendet, um den Ordnernamen und Dateinamen zusammenzufügen, um den vollständigen Dateipfad zu erstellen, damit die Datei im Ordner erstellt werden kann.

Durch die Verwendung der os.path.join-Funktion gewährleistet der Code, dass das richtige Trennzeichen für das aktuelle Betriebssystem verwendet wird, um die Ordnernamen und Dateinamen zusammenzufügen, unabhängig davon, ob der Code unter Windows, Linux oder macOS ausgeführt wird.

Mehr über das Os-Modul

Das os-Modul in Python bietet eine Möglichkeit, mit dem Betriebssystem zu interagieren, sodass Sie verschiedene Aufgaben ausführen können, wie das Erstellen und Löschen von Verzeichnissen, das Lesen und Schreiben von Dateien und das Ausführen von Befehlen.

Öffnen Sie einen neuen Python-Interpreter.

python3

Hier sind einige Beispiele für andere nützliche Funktionen, die das os-Modul bietet:

  • os.listdir(path): Gibt eine Liste aller Dateien und Verzeichnisse im angegebenen Verzeichnis zurück.

    os.listdir('.') ## gibt eine Liste aller Dateien und Verzeichnisse im aktuellen Verzeichnis zurück
  • os.remove(path): Löscht die Datei am angegebenen Pfad.

    os.remove('file.txt') ## löscht die Datei mit dem Namen 'file.txt'
  • os.rmdir(path): Löscht das leere Verzeichnis am angegebenen Pfad.

    os.rmdir('folder') ## löscht das leere Verzeichnis mit dem Namen 'folder'
  • os.rename(src, dst): Benennt eine Datei oder ein Verzeichnis vom src-Pfad zum dst-Pfad um.

    os.rename('file1.txt', 'file2.txt') ## benennt die Datei 'file1.txt' in 'file2.txt' um
  • os.chdir(path): Wechselt das aktuelle Arbeitsverzeichnis zum angegebenen Pfad.

    os.chdir('/home/user/documents') ## wechselt das aktuelle Arbeitsverzeichnis zu '/home/user/documents'
  • os.getcwd(): Gibt das aktuelle Arbeitsverzeichnis zurück.

    os.getcwd() ## gibt das aktuelle Arbeitsverzeichnis zurück, z.B. '/home/user/documents'

Bitte beachten Sie, dass die meisten der obigen Funktionen eine Ausnahme (FileNotFoundError, OSError usw.) auslösen werden, wenn die angegebene Datei oder das Verzeichnis nicht existiert oder Sie nicht über die erforderlichen Berechtigungen verfügen.

Das Durchlaufen eines Verzeichnisbaums

os.walk(top, topdown=True, onerror=None, followlinks=False) ist eine Funktion aus dem os-Modul in Python, die die Dateinamen in einem Verzeichnisbaum generiert, indem sie den Baum entweder von oben nach unten oder von unten nach oben durchläuft. Standardmäßig generiert os.walk() die Dateinamen in einem Verzeichnisbaum von oben nach unten. Für jedes Verzeichnis im Baum, der am Verzeichnis top (einschließlich top selbst) verwurzelt ist, liefert es ein 3-Tupel (dirpath, dirnames, filenames).

Hier ist ein Beispiel dafür, wie Sie os.walk() verwenden können, um alle Dateien in einem Verzeichnis und seinen Unterverzeichnissen auszugeben:

import os

## Drucken Sie alle Dateien in einem Verzeichnis und seinen Unterverzeichnissen
for root, dirs, files in os.walk('.'):
    for file in files:
        print(os.path.join(root, file))

Dieser Code beginnt im aktuellen Verzeichnis (angegeben durch '.') und läuft rekursiv durch alle Unterverzeichnisse, gibt dabei den vollständigen Pfad jeder Datei aus, die er findet.

Hier ist ein weiteres Beispiel, in dem Sie os.walk() verwenden können, um nach einer bestimmten Datei mit einer bestimmten Erweiterung in einem Verzeichnis zu suchen:

import os

def search_file(directory, file_extension):
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(file_extension):
                print(os.path.join(root, file))

search_file('.','.txt')

Dies wird alle Dateien mit der Erweiterung '.txt' suchen und den vollständigen Pfad der Datei ausgeben.

os.walk() ist eine leistungsstarke Funktion, die für viele Aufgaben verwendet werden kann, wie das Suchen nach Dateien, die Analyse von Verzeichnisstrukturen und vieles mehr.

Es ist zu beachten, dass os.walk ein Generator ist, was bedeutet, dass es die Werte im Laufe der Zeit generiert, anstatt sie alle im Speicher zu behalten. Dies macht es effizient für die Behandlung großer Verzeichnisbäume.

Das Glob-Modul

Das glob-Modul in Python bietet eine Möglichkeit, Dateien und Verzeichnisse mit Wildcard-Zeichen zu durchsuchen. glob.glob(pathname) gibt eine Liste von Dateipfaden zurück, die dem angegebenen Pfadnamenmuster entsprechen.

Hier ist ein Beispiel dafür, wie Sie glob.glob() verwenden können, um alle Dateien mit der Endung ".txt" im aktuellen Verzeichnis zu finden:

import glob

txt_files = glob.glob('*.txt')
print(txt_files)

Dieser Code wird alle Dateien mit der Endung ".txt" im aktuellen Verzeichnis durchsuchen und eine Liste von Dateipfaden zurückgeben, die dem Muster entsprechen.

Es ähnelt der os.walk()-Funktion, unterscheidet sich jedoch dadurch, dass es nicht rekursiv durch Unterverzeichnisse sucht. Es sucht nur nach Dateien, die dem angegebenen Muster im aktuellen Verzeichnis entsprechen.

Hier ist ein Beispiel dafür, wie Sie glob.glob() verwenden können, um alle Dateien mit der Endung ".txt" in allen Unterverzeichnissen zu finden:

import glob

txt_files = glob.glob('**/*.txt', recursive=True)
print(txt_files)

Dieser Code wird alle Dateien mit der Endung ".txt" im aktuellen Verzeichnis und allen Unterverzeichnissen durchsuchen.

Im Allgemeinen ist glob.glob() praktischer, wenn Sie nur nach Dateien in einem Verzeichnis und seinen Unterverzeichnissen suchen. os.walk(), ist jedoch leistungsstärker und flexibler, da es verwendet werden kann, um nach Dateien in mehreren Verzeichnissen zu suchen oder um die Struktur eines Verzeichnisbaums zu analysieren.

Es ist zu beachten, dass auch das Glob, wie os.walk, ein Generator ist, was bedeutet, dass es die Werte im Laufe der Zeit generiert, anstatt sie alle im Speicher zu behalten. Dies macht es effizient für die Behandlung großer Dateimengen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit Python Dateien und Ordner mithilfe der Module os und glob manipuliert. Wir haben gelernt, wie man einen neuen Ordner erstellt, das aktuelle Arbeitsverzeichnis ändert, eine neue Datei erstellt, in eine Datei schreibt, eine Datei schließt, die Inhalte eines Verzeichnisses auflistet und Dateien findet, die einem bestimmten Muster mit Hilfe von glob entsprechen.