Estoy tratando de obtener una lista de todos los archivos de registro (.log) en el directorio, incluidos todos los subdirectorios.Cómo obtener archivos en un directorio, incluidos todos los subdirectorios
Respuesta
Pago Python Recursive Directory Walker. En resumen os.listdir() y os.walk() son tus amigos.
Si desea enumerar en el directorio actual, puede usar algo como:
import os
for e in os.walk(os.getcwd()):
print e
Sólo cambia el
os.getcwd()
a otro camino para obtener resultados allí.
Esta respuesta no aborda la pregunta del OP y no es relevante para la mayoría de las personas que buscarían la misma respuesta. – Andrew
import os
import os.path
for dirpath, dirnames, filenames in os.walk("."):
for filename in [f for f in filenames if f.endswith(".log")]:
print os.path.join(dirpath, filename)
Si desea buscar en un directorio diferente de "." puede pasar el directorio como sys.argv [1] y llamar a os.walk (sys.argv [1]). –
Mejora adicional: utilice un generador en lugar de la lista de comprensión: para el nombre de archivo en (f para f ...) –
Si desea excluir un determinado directorio, por ejemplo, 'old_logs', simplemente puede eliminarlo de' dirnames' y no se buscará: 'if" old_logs "en dirnames: dirnames.remove (" old_logs ")' – CGFoX
También puede usar el módulo glob junto con os.walk.
import os
from glob import glob
files = []
start_dir = os.getcwd()
pattern = "*.log"
for dir,_,_ in os.walk(start_dir):
files.extend(glob(os.path.join(dir,pattern)))
¿Qué hacen los caracteres de subrayado en el for-loop? '_' –
@nueverest 'os.walk' devuelve un 3-tuple' (dirpath, dirnames, filenames) 'en cada iteración, y solo estamos interesados en' dirpath' (asignado a 'dir' arriba); los guiones bajos solo se utilizan como marcadores de posición para los otros 2 valores que no nos interesan (es decir, 'dirnames', y luego' filenames', se asignan a la variable '_', que nunca usaremos). – tavnab
tengo una solución:
import os
for logfile in os.popen('find . -type f -name *.log').read().split('\n')[0:-1]:
print logfile
o
import subprocess
(out, err) = subprocess.Popen(["find", ".", "-type", "f", "-name", "*.log"], stdout=subprocess.PIPE).communicate()
for logfile in out.split('\n')[0:-1]:
print logfile
Estos dos beneficiarse de find . -type f -name *.log
.
El primero de ellos es más sencillo pero no está garantizada de espacios en blanco cuando se añada -name *.log
, pero trabajado bien para simplemente find ../testdata -type f
(en mi entorno OS X).
El segundo subproceso que utiliza parece más complicado, pero este es el espacio seguro (de nuevo, en mi entorno OS X).
Esta es inspirado por Chris Bunch, en la respuesta https://stackoverflow.com/a/3503909/2834102
- 1. Listar los archivos en un directorio y todos los subdirectorios
- 2. Listar todos los archivos y directorios en un directorio + subdirectorios
- 3. Forma no recursiva de obtener todos los archivos en un directorio y sus subdirectorios en Java
- 4. cómo listar todos los subdirectorios en un directorio
- 5. cómo obtener todos los archivos en un directorio en ipad usando el objetivo c
- 6. Obtener todos los subdirectorios que solo contienen archivos
- 7. Liste de manera eficiente todos los subdirectorios en un directorio
- 8. ¿Cómo obtener todos los archivos en un directorio?
- 9. Cómo gzip todos los archivos en todos los subdirectorios en un archivo comprimido en bash
- 10. CoffeeScript: compila todos los archivos .coffee en el directorio actual y en todos los subdirectorios
- 11. obtener todos los subdirectorios inmediatos en ruby
- 12. TCL: buscar recursivamente subdirectorios para obtener todos los archivos .tcl
- 13. Obtener rutas absolutas de todos los archivos en un directorio
- 14. Cómo descomprimir todos los archivos en todos los subdirectorios en bash
- 15. Eliminar carpeta y todos los archivos/subdirectorios
- 16. iterar recursivamente sobre todos los archivos en un directorio y sus subdirectorios en Qt
- 17. Directorios de copia de iOS, incluidos los subdirectorios
- 18. CMake: ¿Cómo obtener el nombre de todos los subdirectorios de un directorio?
- 19. Eliminar todos los archivos en un directorio sin subdirectorios con Apache Ant
- 20. Cómo obtener todos los subdirectorios inmediatos en Python
- 21. Agregue el grupo "Todos" al directorio y todos sus subdirectorios
- 22. Bash/Shell: ¿mueve todos los archivos de los subdirectorios al directorio de destino?
- 23. PHP: Obtener una lista de todos los nombres de archivo incluidos en mi directorio de imágenes
- 24. lista de PHP todos los archivos en el directorio
- 25. ¿Cómo cargar todos los archivos de símbolos de forma recursiva desde una ruta determinada, incluidos los subdirectorios?
- 26. Obtener una lista de todos los archivos en un directorio (recursivo)
- 27. Git - Seguimiento automático de todos los archivos en un directorio
- 28. Obtener versión de archivo y versión de ensamblado de archivos DLL en el directorio actual y todos los subdirectorios
- 29. ¿Cómo puedo eliminar todos los archivos/subdirectorios excepto algunos archivos en DOS?
- 30. Copie todos los archivos en el directorio
Esto ya se ha preguntado: http://stackoverflow.com/questions/837606/find-the-oldest-file-recursively-in- un directorio, así como algunos otros (busque 'Caminata de Python' en el cuadro de búsqueda) –