Wie kann ich den Inhalt eines Verzeichnisses in Python auflisten?


Antworten:



52

Einweg:

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

Ein anderer Weg :

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

Beispiele finden Sie hier .

Die glob.globobige Methode listet keine versteckten Dateien auf.

Seit ich diese Frage vor Jahren beantwortet habe, wurde pathlib zu Python hinzugefügt. Meine bevorzugte Methode zum Auflisten eines Verzeichnisses umfasst jetzt normalerweise die iterdirMethode für PathObjekte:

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

Würde glob.glob versteckte Dateien auflisten (ich nehme an, Sie meinen .XYZDateien in einem Unix-Dateisystemkontext), wenn sie mit verwendet werden glob.glob("/home/username/www/.*")?
Andy Finkenstadt

Ja, ich meine Dateien, die mit einem Punkt beginnen. Das von Ihnen angegebene Beispiel funktioniert zum Abgleichen versteckter Dateien (und nur versteckter Dateien).
Trey Hunner

Ich habe gerade glob importiert und glob.glob (r'c: \ users ') verwendet, aber es ist nur zurückgekehrt['c:\\users']
Musixauce3000

1
@ Musixauce3000: Du wirst es tun wollen glob.glob(r'c:\users\*')(glob, es listet eigentlich keine Verzeichnisse auf, sondern erweitert Sternchen und solche, die eine ähnliche Aufgabe erfüllen).
Trey Hunner

38

os.walk kann verwendet werden, wenn Sie eine 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)

18

glob.globoder os.listdirwird es tun.


import globENTER glob.glob(r'c:\users')ENTER scheint nur zurückzukehren ['c:\\users']. Warum ist das so? Ich möchte glob.glob verwenden, da es, wie andere Benutzer bereits betont haben, angeblich den Inhalt eines Verzeichnisses zurückgibt und gleichzeitig versteckte Dateien ignoriert. Das ist wichtig.
Musixauce3000

weil Sie einen Platzhalter angeben müssen mit glob:glob.glob(r'c:\users\*')
Jean-François Fabre

14

Das osModul erledigt all diese Dinge.

os.listdir(path)

Gibt eine Liste zurück, die die Namen der Einträge in dem durch path angegebenen Verzeichnis enthält. Die Liste ist in beliebiger Reihenfolge. Die Sondereinträge '.' Sind nicht enthalten. und '..' auch wenn sie im Verzeichnis vorhanden sind.

Verfügbarkeit: Unix, Windows.


4

In Python 3.4+ können Sie das neue pathlibPaket verwenden:

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

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

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

3

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

Der Unterschied besteht darin, dass Dateieinträge und keine Namen zurückgegeben werden. Unter einigen Betriebssystemen wie Windows bedeutet dies, dass Sie nicht os.path.isdir/filewissen müssen, ob es sich um eine Datei handelt oder nicht. Dies spart CPU-Zeit, da statdies bereits beim Scannen von Verzeichnissen in Windows erfolgt:

Beispiel zum Auflisten eines Verzeichnisses und zum Drucken von Dateien, die größer als max_valueBytes sind:

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

(lesen Sie eine umfangreiche leistungsbasierte Antwort von mir hier )


2

Der folgende Code listet Verzeichnisse und die Dateien im Verzeichnis auf. Der andere ist os.walk

def print_directory_contents(sPath):
        import os                                       
        for sChild in os.listdir(sPath):                
            sChildPath = os.path.join(sPath,sChild)
            if os.path.isdir(sChildPath):
                print_directory_contents(sChildPath)
            else:
                print(sChildPath)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.