Jaki jest najprostszy sposób uzyskania pełnej rekurencyjnej listy plików w folderze z pythonem? Wiem o os.walk()
, ale wydaje się, że jest to przesadne, jeśli chodzi o uzyskanie niefiltrowanej listy wszystkich plików. Czy to naprawdę jedyna opcja?Najprostszy sposób na uzyskanie odpowiednika "znajdź". w python?
Odpowiedz
Nic nie uniemożliwia tworzenia własnych funkcji:
import os
def listfiles(folder):
for root, folders, files in os.walk(folder):
for filename in folders + files:
yield os.path.join(root, filename)
Można go używać tak:
for filename in listfiles('/etc/'):
print filename
Albo to, albo ręcznie recursing z isdir()
/isfile()
i listdir()
lub można użyć subprocess.check_output()
i nazywają find .
. W zasadzie os.walk()
jest najwyższym poziomem, nieco niższy poziom to rozwiązanie pół-ręczne oparte na listdir()
, a jeśli chcesz, to samo wyjście find .
dałoby Ci z jakiegoś powodu wywołanie systemowe z subprocess
.
+1 dla 'os.walk()'. – Blender
import os
path = "path/to/your/dir"
for (path, dirs, files) in os.walk(path):
print files
Czy to przesada, albo ja czegoś brakuje?
Masz absolutną rację. Wygląda o wiele trudniej niż w rzeczywistości. –
os.walk()
nie jest przesadą w żaden sposób. To może wygenerować listę plików i katalogów migiem:
files = [os.path.join(dirpath, filename)
for (dirpath, dirs, files) in os.walk('.')
for filename in (dirs + files)]
można przekształcić generator, aby przetwarzać tylko jedną ścieżkę w czasie i bezpieczne pamięci.
+1 dla najbardziej pytonowego rozwiązania :) – kgr
Można również użyć programu sam find
od Python przy użyciu sh
import sh
text_files = sh.find(".", "-iname", "*.txt")
- 1. Kafka - najprostszy sposób na uzyskanie ostatniej offsetu
- 2. Java: Najprostszy sposób na uzyskanie ostatniego słowa w ciągu znaków
- 3. Python: najprostszy sposób, aby uzyskać listę wartości z dyktowania?
- 4. Python - Najprostszy sposób definiowania wielu zmiennych globalnych
- 5. Najprostszy sposób uruchomienia Sphinx na jednym pliku python
- 6. Najprostszy sposób na uzyskanie liczby miejsc po przecinku w liczbie w kodzie JavaScript
- 7. Najprostszy sposób na pobranie pliku?
- 8. Najprostszy sposób na wymuszenie awarii w Swift
- 9. Jaki jest najprostszy sposób na uzyskanie nagłówków z pliku CSV w Ruby?
- 10. Jaki jest najprostszy sposób na uzyskanie numeru linii z pozycji char w łańcuchu?
- 11. Jaki jest najprostszy sposób na uzyskanie szerokości i długości geograficznej użytkownika z adresu IP?
- 12. Jaki jest najprostszy sposób na uzyskanie wszystkich ciągów, które nie zaczynają się od postaci?
- 13. Najprostszy sposób na cykliczny iterator (cyrkulator)?
- 14. Najprostszy sposób na zapisanie NSData do pliku
- 15. Najprostszy sposób na fałszywe właściwości atrybutu PostSharp
- 16. Najprostszy sposób testowania ODBC na WIndows
- 17. Najprostszy sposób na kopiowanie int do bajtu []
- 18. Najprostszy sposób sprawdzania numerów
- 19. Najbardziej skuteczny sposób na uzyskanie kilku skrótów w Redis?
- 20. najprostszy python odpowiadający R's grepl
- 21. Jakikolwiek sposób na uzyskanie nazwy użytkownika iPhone'a?
- 22. Clojure najlepszy sposób na uzyskanie wielu wątków?
- 23. Prawidłowy sposób na uzyskanie najbardziej negatywnego Double
- 24. Najlepszy sposób na uzyskanie oryginalnego celu
- 25. IDataReader - Jakikolwiek sposób na uzyskanie całkowitych wierszy?
- 26. Bardziej skuteczny sposób na uzyskanie permutacji całkowitych?
- 27. Znajdź wolne miejsce na dysku w python na OS/X
- 28. Najprostszy sposób testowania kodu jednostkowego z Pythonem
- 29. Najbardziej pythonic sposób na uzyskanie poprzedniego elementu
- 30. Przenośny/szybki sposób na uzyskanie wskaźnika do danych Numpy/Numpypy
Dzięki! Chciałem tylko upewnić się, że ta funkcja nie jest już częścią standardowej biblioteki. –
Chciałbym, żeby ktoś istniał. Zawsze możesz edytować 'os.py';) – Blender
Ładne rozwiązanie! Ale 'find .' również wyświetla katalogi. Poprawka jest jednak bardzo łatwa. :) –