In Python möchte ich NUR alle Dateien im aktuellen Verzeichnis auflisten. Ich möchte nicht, dass Dateien aus einem Unterverzeichnis oder einem übergeordneten Verzeichnis aufgelistet werden.
Es scheint ähnliche Lösungen zu geben, aber sie scheinen für mich nicht zu funktionieren. Hier ist mein Code-Snippet:
import os
for subdir, dirs, files in os.walk('./'):
for file in files:
do some stuff
print file
Nehmen wir an, ich habe 2 Dateien, Holygrail.py und Tim, in meinem aktuellen Verzeichnis. Ich habe auch einen Ordner, der zwei Dateien enthält - nennen wir sie Arthur und Lancelot. Wenn ich das Skript ausführe, bekomme ich Folgendes:
holygrail.py
Tim
Arthur
Lancelot
Ich bin glücklich mit Holygrail.py und Tim. Aber die beiden Dateien, Arthur und Lancelot, möchte ich nicht auflisten.
[os.path.join(path_base,f) for f in os.listdir(path_base) if os.path.isfile(os.path.join(path_base,f))]
files = [f for f in os.listdir("/somedir") if os.path.isfile(os.path.join("/somedir", f))]'
Sie können
os.listdir
für diesen Zweck verwenden. Wenn Sie nur Dateien und keine Verzeichnisse möchten , können Sie die Ergebnisse mit filternos.path.isfile
.Beispiel:
oder
quelle
quelle
Sie können verwenden
os.scandir()
. Neue Funktion in stdlib startet ab Python 3.5.Schneller als
os.listdir()
.os.walk()
Geräteos.scandir()
.quelle
Dies kann mit os.walk () erfolgen
Python 3.5.2 getestet;
Entfernen Sie die Zeile dirs.clear (), und die Dateien in den Unterordnern werden wieder aufgenommen.
Update mit Referenzen ;
os.walk ist hier dokumentiert und spricht über die erstellte Dreifachliste und Topdown-Effekte.
.clear () wird hier zum Leeren einer Liste dokumentiert
Wenn Sie also die relevante Liste von os.walk löschen, können Sie das Ergebnis an Ihre Bedürfnisse anpassen.
quelle
Sie können diesen Code
del dirs[:]
wie folgt verbessern .Oder noch besser, wenn Sie mit dem aktuellen Arbeitsverzeichnis auf os.walk zeigen könnten.
quelle
stattdessen
os.walk
einfach verwendenos.listdir
quelle
Sie können das pathlib-Modul verwenden.
quelle