Kann nicht schwer sein, aber ich habe eine mentale Blockade.
Wie kann ich den Inhalt eines Verzeichnisses in Python auflisten?
Paul D. Waite
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
Trey Hunner
Einweg:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
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 werdenglob.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
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)
Tuomas Pelkonen
glob.glob
oder os.listdir
werde es tun.
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.
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())
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)