¿Cuál es la forma más simple de obtener la lista recursiva completa de archivos dentro de una carpeta con python? Sé acerca de os.walk()
, pero parece excesivo para obtener la lista no filtrada de todos los archivos. ¿Es realmente la única opción?La manera más simple de obtener el equivalente a "encontrar". en Python?
Respuesta
No hay nada que le impide la creación de su propia función:
import os
def listfiles(folder):
for root, folders, files in os.walk(folder):
for filename in folders + files:
yield os.path.join(root, filename)
Usted puede usarlo de esta manera:
for filename in listfiles('/etc/'):
print filename
O eso, o manualmente de manera recursiva con isdir()
/isfile()
y listdir()
o puede utilizar subprocess.check_output()
y llame find .
. Bascialmente os.walk()
es el nivel más alto, el nivel ligeramente inferior es la solución semi-manual basada en listdir()
y si desea la misma salida find .
le dará por alguna razón puede hacer una llamada al sistema con subprocess
.
+1 para 'os.walk()'. – Blender
import os
path = "path/to/your/dir"
for (path, dirs, files) in os.walk(path):
print files
¿Es esta una exageración, o me estoy perdiendo algo?
Tiene toda la razón. Parece mucho más difícil de lo que realmente es. –
os.walk()
no es exagerado de ninguna manera. Puede generar la lista de archivos y directorios en un santiamén:
files = [os.path.join(dirpath, filename)
for (dirpath, dirs, files) in os.walk('.')
for filename in (dirs + files)]
Usted puede convertir esto en un generador, con sólo el proceso de una sola ruta a la vez y seguro en la memoria.
+1 para la solución más pitonica :) – kgr
También es posible usar el programa en sí find
desde Python usando sh
import sh
text_files = sh.find(".", "-iname", "*.txt")
- 1. Manera más simple de resolver ecuaciones matemáticas en Python
- 2. ¿Cuál es la forma más simple de encontrar la diferencia entre 2 veces en python?
- 3. Manera más simple de acceder a RouteData.Values from View
- 4. ¿Cómo dividir un archivo XML de la manera más simple en Python?
- 5. ¿La manera más simple de actualizar ListBox con ItemsSource personalizado?
- 6. Python equivalente a memory_get_usage() de PHP
- 7. ¿La manera más simple de hacer una auto-unión recursiva?
- 8. Python equivalente a find2perl
- 9. ¿La manera más eficiente de obtener varios hashes en Redis?
- 10. ¿Cuál es la manera más simple de obtener el número de línea de la posición de char en String?
- 11. ¿Cómo compilar javadoc de fuentes de la manera más simple?
- 12. La manera más simple de configurar el acceso de administrador remoto a un proceso web2py
- 13. Manera más simple para copiar int a byte []
- 14. Contraseña protegiendo mi aplicación de Android (la manera más simple)
- 15. La manera más pitónica de obtener el elemento anterior
- 16. Manera más simple de ejecutar Sphinx en un archivo de Python
- 17. Clojure equivalente a Python doctest?
- 18. MATLAB equivalente a string.join de Python()
- 19. Manera más simple de crear animación ocupada en WPF
- 20. ¿Existe un equivalente en Scala a la función de mapa más general de Python?
- 21. Manera más limpia de encontrar una coincidencia en una lista
- 22. ¿Hay una manera más simple de implementar en WebSphere?
- 23. La forma más rápida de encontrar el punto más cercano a un punto dado en 3D, en Python
- 24. ¿Cuál es la consulta SQL más simple para encontrar el segundo valor más grande?
- 25. ¿Cuál es la forma más simple de usar SSH Python?
- 26. Equivalente a __func__ (de C) en Python
- 27. ¿Cuál es el equivalente de python a "a" .. "azc"
- 28. Encontrar el archivo editado más reciente en python
- 29. Ruby equivalente a la ayuda de Python()?
- 30. Python equivalente a la función LINQ All?
Gracias! Solo quería asegurarme de que esta función no formara parte de la biblioteca estándar. –
Ojalá existiera uno. Siempre puede editar 'os.py';) – Blender
¡Buena solución! Pero 'find .' también enumera directorios. La solución es muy fácil sin embargo. :) –