Con Python, ¿cómo obtengo una matriz de objetos de información de archivos, en función de una búsqueda de un sistema de archivos?

StackOverflow https://stackoverflow.com/questions/1617666

  •  06-07-2019
  •  | 
  •  

Pregunta

Actualmente tengo una secuencia de comandos bash que ejecuta el comando find , así:

find /storage/disk-1/Media/Video/TV -name *.avi -mtime -7

Esto obtiene una lista de programas de TV que se agregaron a mi sistema en los últimos 7 días. Luego continúo creando algunos enlaces simbólicos para poder acceder a mis programas de televisión más recientes.

Estoy buscando volver a codificar esto en Python, pero tengo algunas preguntas que parece que puedo encontrar las respuestas para usar Google (tal vez no estoy buscando lo correcto). Creo que la mejor manera de resumir esto es hacer la pregunta:

¿Cómo realizo una búsqueda en mi sistema de archivos (debería llamar find ?) que me da una serie de objetos de información de archivos (que contienen la fecha de modificación, el nombre del archivo, etc.) para que puede ordenarlos según la fecha y otras cosas similares?

¿Fue útil?

Solución

import os, time

allfiles = []
now = time.time()

# walk will return triples (current dir, list of subdirs, list of regular files)
# file names are relative to dir at first
for dir, subdirs, files in os.walk("/storage/disk-1/Media/Video/TV"):
    for f in files:
        if not f.endswith(".avi"):
            continue
        # compute full path name
        f = os.path.join(dir, f)
        st = os.stat(f)
        if st.st_mtime < now - 3600*24*7:
            # too old
            continue
        allfiles.append((f, st))

Esto devolverá todos los archivos que también se encuentren devueltos, como una lista de pares (nombre de archivo, resultado estadístico).

Otros consejos

mirar en el módulo os: os.walk es la función que recorre el sistema de archivos, os.path es el módulo que proporciona el archivo mtime y otras informaciones de archivos. también os.path define muchas funciones para analizar y dividir nombres de archivos.

también de interés, el módulo glob define una función para " globbing " cadenas (que coinciden con una cadena utilizando reglas de comodines de Unix)

a partir de esto, construir una lista de archivos que coincida con algún criterio debería ser fácil.

  • Puedes usar " buscar " a través del " subproceso " módulo.
  • Luego, usa la " división " Función de cadena para diseccionar cada línea.
  • Para cada archivo, use el módulo del sistema operativo (por ejemplo, getmtime, etc.) para obtener información del archivo

o

  • Utiliza la " caminata " y " glob " módulos para obtener las rutas de archivo en los objetos
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top