Wie kann ich den Inhalt eines Verzeichnisses in Python auflisten?

Lesezeit: 3 Minuten

Benutzer-Avatar
Paul D. Waite

Kann nicht schwer sein, aber ich habe eine mentale Blockade.

import os
os.listdir("path") # returns list

  • und wenn keine Argumente übergeben werden, wird der Inhalt von CWD aufgelistet: os.listdir() = os.listdir('.')

    – Geremia

    12. September 2021 um 23:00 Uhr


Benutzer-Avatar
Trey Hunner

Einweg:

import os
os.listdir("/home/username/www/")

Ein anderer Weg:

glob.glob("/home/username/www/*")

Beispiele finden Sie hier.

Das glob.glob obige Methode listet keine versteckten Dateien auf.

Da ich diese Frage ursprünglich vor Jahren beantwortet habe, pathlib wurde zu Python hinzugefügt. Meine bevorzugte Methode zum Auflisten eines Verzeichnisses ist jetzt normalerweise die iterdir Methode an Path Objekte:

from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")

  • Würde glob.glob versteckte Dateien auflisten (ich nehme an, du meinst .XYZ Dateien in einem Unix-Dateisystemkontext), wenn sie mit verwendet werden glob.glob("/home/username/www/.*") ?

    – Andy Finkenstadt

    3. August 2012 um 17:48 Uhr


  • Ja, ich meine Dateien, die mit einem Punkt beginnen. Das Beispiel, das Sie gegeben haben, würde zum Abgleich versteckter Dateien (und nur versteckter Dateien) funktionieren.

    – Trey Hunner

    4. August 2012 um 19:10 Uhr

  • Ich habe gerade glob importiert und glob.glob(r’c:\users’) verwendet, aber es wurde nur zurückgegeben ['c:\\users']

    – Musixauce3000

    14. April 2016 um 19:43 Uhr

  • @Musixauce3000: Du wirst es tun wollen glob.glob(r'c:\users\*') (glob listet nicht wirklich Verzeichnisse auf, sondern erweitert Sternchen und dergleichen, was eine ähnliche Aufgabe erfüllt).

    – Trey Hunner

    15. April 2016 um 7:04 Uhr

Benutzer-Avatar
Markus Tolonen

os.walk kann verwendet werden, wenn Sie Rekursion benötigen:

import os
start_path="." # current directory
for path,dirs,files in os.walk(start_path):
    for filename in files:
        print os.path.join(path,filename)

Benutzer-Avatar
Tuomas Pelkonen

glob.glob oder os.listdir werde es tun.

Benutzer-Avatar
zdav

Das os Modul kümmert sich um all das Zeug.

os.listdir(path)

Gibt eine Liste zurück, die die Namen der Einträge in dem durch Pfad angegebenen Verzeichnis enthält. Die Liste ist in willkürlicher Reihenfolge. Es enthält nicht die speziellen Einträge ‘.’ und ‘..’, auch wenn sie im Verzeichnis vorhanden sind.

Verfügbarkeit: Unix, Windows.

Benutzer-Avatar
jpyams

In Python 3.4+ können Sie die neue verwenden pathlib Paket:

from pathlib import Path
for path in Path('.').iterdir():
    print(path)

Path.iterdir() gibt einen Iterator zurück, der leicht in a umgewandelt werden kann list:

contents = list(Path('.').iterdir())

Benutzer-Avatar
Jean-Francois Fabre

Seit Python 3.5 können Sie verwenden os.scandir.

Der Unterschied besteht darin, dass es eine Datei zurückgibt Einträge nicht Namen. Bei einigen Betriebssystemen wie Windows bedeutet dies, dass Sie dies nicht tun müssen os.path.isdir/file um zu wissen, ob es sich um eine Datei handelt oder nicht, und das spart CPU-Zeit, weil stat ist bereits beim Durchsuchen des Verzeichnisses in Windows erledigt:

Beispiel zum Auflisten eines Verzeichnisses und zum Drucken von Dateien größer als max_value Bytes:

for dentry in os.scandir("/path/to/dir"):
    if dentry.stat().st_size > max_value:
       print("{} is biiiig".format(dentry.name))

(Lesen Sie hier eine ausführliche leistungsbasierte Antwort von mir)

1054310cookie-checkWie kann ich den Inhalt eines Verzeichnisses in Python auflisten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy