Buscar el archivo de mayor tamaño en una ruta

Buscar el archivo de mayor tamaño en una ruta

Buscar el archivo de mayor tamaño con Python

El siguiente programa de Python permite buscar el archivo más grande dentro de una ruta y todas sus subcarpetas (o sea, la búsqueda es recursiva). La ruta debe pasarse como primer argumento al invocar el archivo. Además, opcionalmente se puede pasar un segundo argumento que indique una extensión de archivo para limitar la búsqueda.

import os
import pathlib
import sys

target_path = pathlib.Path(sys.argv[1])
try:
    target_ext = sys.argv[2]
except IndexError:
    target_ext = None
current_max_size = 0
print("Buscando...")
# Recorrer la ruta especificada.
for dirpath, dirnames, filenames in os.walk(target_path):
    # Chequear archivo por archivo.
    for filename in filenames:
        # Ignorar los archivos que no tengan la extensión especificada,
        # si es que se indicó alguna.
        if (target_ext is not None and
            not filename.lower().endswith(target_ext.lower())):
            continue
        p = pathlib.Path(dirpath, filename)
        # https://micro.recursospython.com/recursos/como-obtener-el-tamano-de-un-archivo.html
        if (size := p.stat().st_size) > current_max_size:
            # Actualizar las variables que contienen el archivo
            # más grande encontrado hasta el momento.
            current_max_size = size
            biggest_file = p
            print("Archivo más grande hasta el momento:", filename)

print(f"Archivo más grande final: {biggest_file.absolute()} "
      f"({current_max_size // 1024} KB)")

Por ejemplo, para buscar el archivo más grande dentro de C:\Python310 y sus subcarpetas, ejecutar en la terminal:

py buscar_archivo.py C:\Python310

Para buscar el archivo de Python (.py) más grande:

py buscar_archivo.py C:\Python310 .py

El código es multiplataforma. En macOS y distribuciones de Linux utilícese python o python3 en lugar de py.

Donar ❤️

¿Te gusta nuestro contenido? ¡Ayudanos a seguir creciendo con una donación!

Deja una respuesta