Advertisement
teslariu

comando dir

Sep 1st, 2023
1,089
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.86 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4.  
  5. import os
  6. from datetime import datetime
  7. from tabulate import tabulate
  8.  
  9. """
  10. 15/05/2020  22:23    <DIR>          .android
  11. 16/03/2022  11:43             1.795 .asc
  12.  
  13. Vamos a implementar el comando dir de Windows
  14. Analizando la salida veo 4 columnas
  15. directorio:  fecha y hora, <dir>,       ,nombre
  16. archivo:     fecha y hora,      , tamaño,nombre
  17. """
  18.  
  19. # creo una lista vacía para usarla con 'tabulate' como una tabla para
  20. # mostrar los datos
  21. tabla = []
  22.  
  23. # variables para contar archivos y directorios
  24. archivos = 0
  25. directorios = 0
  26.  
  27. #  necesito un comando para escanear el directorio, leer sus contenido
  28. # y las propiedades de sus archivos/directorios: nombre, tamaño, etc
  29. # os.listdir() y os.walk() no sirven porque solo buscan nombres
  30. # scandir() verifica si una entrad del directorio es archivo o dir, su
  31. # tamaño, sus permisos, sus timestamps, etc
  32.  
  33. for entrada in os.scandir(os.getcwd()):
  34.     nombre = entrada.name
  35.     # leo la info de cada entrada (file o dir)
  36.     info = entrada.stat()
  37.     mtime = datetime.utcfromtimestamp(info.st_mtime).strftime("%d/%m/%Y %H:%M")
  38.    
  39.     if entrada.is_file():
  40.         tamanio = info.st_size
  41.        
  42.         # formateo el tamaño en B, Kb o Mb:
  43.         if tamanio < 1024:
  44.             tamanio = f"{tamanio}B"
  45.            
  46.         elif 1024 <= tamanio < 1024**2:
  47.             tamanio = f"{tamanio/1024:.1f}Kb"
  48.            
  49.         else:
  50.             tamanio = f"{tamanio/1024**2:.1f}Mb"
  51.        
  52.         archivos += 1
  53.        
  54.         tabla.append([mtime, '', tamanio, nombre])
  55.        
  56.    
  57.    
  58.     elif entrada.is_dir():
  59.         directorios += 1
  60.         tabla.append([mtime, '<DIR>','', nombre])
  61.        
  62.        
  63.     else:
  64.         pass
  65.        
  66. print(f"""
  67. Directorio de {os.getcwd()}
  68. """)
  69.  
  70. print(tabulate(
  71.             tabla,
  72.             tablefmt = 'plain',
  73.             colalign = ['center', 'center', 'right', 'left']
  74.         )
  75. )
  76.  
  77. print(f"             {archivos} archivos")
  78. print(f"             {directorios} directorios")
  79.        
  80.    
  81.    
  82.    
  83.    
  84.    
  85.    
  86.    
  87.    
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement