Was ist der einfachste Weg, um die vollständige rekursive Liste von Dateien in einem Ordner mit Python zu bekommen? Ich weiß über os.walk()
, aber es scheint Overkill für nur die ungefilterte Liste aller Dateien zu bekommen. Ist es wirklich die einzige Option?Einfachster Weg, um das Äquivalent von "finden" zu erhalten. in Python?
Antwort
Es gibt nichts, was man verhindern, dass eine eigene Funktion zu erstellen:
import os
def listfiles(folder):
for root, folders, files in os.walk(folder):
for filename in folders + files:
yield os.path.join(root, filename)
Sie können es verwenden, etwa so:
for filename in listfiles('/etc/'):
print filename
Entweder das, oder manuell Rekursion mit isdir()
/isfile()
und listdir()
oder Sie könnten subprocess.check_output()
verwenden und find .
nennen. Basiziell os.walk()
ist höchste Ebene, etwas niedrigere Ebene ist semi-manuelle Lösung basierend auf listdir()
und wenn Sie möchten, dass die gleiche Ausgabe find .
Ihnen aus irgendeinem Grund geben Sie einen Systemanruf mit subprocess
.
+1 für 'os.walk()' verwenden. – Blender
import os
path = "path/to/your/dir"
for (path, dirs, files) in os.walk(path):
print files
diese trieben, oder bin ich etwas fehlt?
Sie haben absolut Recht. Es sieht viel schwieriger aus, als es tatsächlich ist. –
os.walk()
ist auf keinen Fall übertrieben.
files = [os.path.join(dirpath, filename)
for (dirpath, dirs, files) in os.walk('.')
for filename in (dirs + files)]
Sie können machen dieses zu einem Generator, nur Prozess einen Weg zu einem Zeitpunkt und sicher auf das Gedächtnis: Es kann Ihre Liste der Dateien und Verzeichnisse in einem Jiffy erzeugen.
+1 für die meisten Pythonic Lösung :) – kgr
Sie könnten auch das find
Programm selbst aus Python von sh
import sh
text_files = sh.find(".", "-iname", "*.txt")
- 1. iPhone Objective-C Einfachster Weg, um ein Aktienkurs zu erhalten
- 2. Einfachster Weg, um die Root-Domain einer Website zu erhalten
- 3. Einfachster Weg, um den aktuellen Standort des Benutzers zu erhalten
- 4. Einfachster Weg, um Komet-Chat zu machen
- 5. Einfachster Weg, um Code zu einem bestimmten Zeitpunkt in. NET
- 6. Einfachster Weg, um schnell RPC mit .NET zu bekommen?
- 7. Einfachster Weg zum Realloc
- 8. Einfachster Weg zum Komponententest C-Code mit Python
- 9. Einfachster Weg, um Audio in die Website einzubinden
- 10. Einfachster Weg, Unicode-Codepunkt in UTF-8 zu konvertieren
- 11. Einfachster Weg, einen Windows-Dienst zu entwickeln/zu debuggen
- 12. Einfachster Weg, um Objekt mit dem Ergebnis von PropertyInfo.GetValue in C# zu vergleichen?
- 13. Einfachster Weg zur Durchführung einer modularen Matrixinversion mit Python?
- 14. Einfachster Weg, um ein Array zurückzugeben, das in mehreren Arrays verschachtelt ist
- 15. Der beste Weg, um das ursprüngliche Ziel zu erhalten
- 16. Python-Äquivalent von Haskell [1 ..] (um eine Liste zu indizieren)
- 17. Versuchen, einen Weg zu finden, um Julia `Generator` zu konstruieren
- 18. Die meisten pythonischen Weg, um das vorherige Element zu erhalten
- 19. Python schnellster Weg, um Werte in großen Datenmengen finden
- 20. Was ist der einfachste Weg, um ein Äquivalent zu GNU Grep zu erhalten, das negative Lookbehinds unterstützt?
- 21. Was ist das Python-Äquivalent von Perls FindBin?
- 22. Jede Python-Funktion, um das Stammverzeichnis "data_files" zu erhalten?
- 23. Richtiger Weg, um rowcount in Java zu finden JDBC
- 24. Cleverer Weg, um Typrückschlüsse zu erhalten?
- 25. Einfachster Weg, um ein NSMag zu zeichnen abgeblendet (wie eine deaktivierte Ansicht)
- 26. yaml-cpp Einfachster Weg, um eine Karte mit undefinierten Werten zu durchlaufen
- 27. Jeder Weg, um alle möglichen Kwargs für eine Funktion in Python von CLI zu finden?
- 28. MATLAB ksdensity Äquivalent in Python
- 29. Besserer Weg, um das Basisverzeichnis zu bekommen?
- 30. Einfachster Weg, Matrix entlang der 3. Dimension zu wiederholen
Danke! Ich wollte nur sicherstellen, dass diese Funktion nicht bereits Teil der Standardbibliothek ist. –
Ich wünschte, man existiere. Sie können immer 'os.py' bearbeiten;) – Blender
Schöne Lösung! Aber "find." Listet auch Verzeichnisse auf. Die Lösung ist jedoch sehr einfach. :) –