Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- #
- import os
- from datetime import datetime
- from tabulate import tabulate
- """
- 15/05/2020 22:23 <DIR> .android
- 16/03/2022 11:43 1.795 .asc
- Vamos a implementar el comando dir de Windows
- Analizando la salida veo 4 columnas
- directorio: fecha y hora, <dir>, ,nombre
- archivo: fecha y hora, , tamaño,nombre
- """
- # creo una lista vacía para usarla con 'tabulate' como una tabla para
- # mostrar los datos
- tabla = []
- # variables para contar archivos y directorios
- archivos = 0
- directorios = 0
- # necesito un comando para escanear el directorio, leer sus contenido
- # y las propiedades de sus archivos/directorios: nombre, tamaño, etc
- # os.listdir() y os.walk() no sirven porque solo buscan nombres
- # scandir() verifica si una entrad del directorio es archivo o dir, su
- # tamaño, sus permisos, sus timestamps, etc
- for entrada in os.scandir(os.getcwd()):
- nombre = entrada.name
- # leo la info de cada entrada (file o dir)
- info = entrada.stat()
- mtime = datetime.utcfromtimestamp(info.st_mtime).strftime("%d/%m/%Y %H:%M")
- if entrada.is_file():
- tamanio = info.st_size
- # formateo el tamaño en B, Kb o Mb:
- if tamanio < 1024:
- tamanio = f"{tamanio}B"
- elif 1024 <= tamanio < 1024**2:
- tamanio = f"{tamanio/1024:.1f}Kb"
- else:
- tamanio = f"{tamanio/1024**2:.1f}Mb"
- archivos += 1
- tabla.append([mtime, '', tamanio, nombre])
- elif entrada.is_dir():
- directorios += 1
- tabla.append([mtime, '<DIR>','', nombre])
- else:
- pass
- print(f"""
- Directorio de {os.getcwd()}
- """)
- print(tabulate(
- tabla,
- tablefmt = 'plain',
- colalign = ['center', 'center', 'right', 'left']
- )
- )
- print(f" {archivos} archivos")
- print(f" {directorios} directorios")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement