Skip to content

Instantly share code, notes, and snippets.

@15Galan
Last active April 11, 2023 09:03
Show Gist options
  • Save 15Galan/e96117ae8cc4355e9ed191c75292a3d9 to your computer and use it in GitHub Desktop.
Save 15Galan/e96117ae8cc4355e9ed191c75292a3d9 to your computer and use it in GitHub Desktop.
Script que recibe una ruta y un número de caracteres como argumento, y muestra una lista de aquellos archivos cuyo contenido sea inferior a dicho número de caracteres.
# Si no recibe argumentos o falta alguno:
# - La ruta por defecto es la del script.
# - El número de caracteres por defecto es 500.
# Si falla alguno de los argumentos:
# - La ruta no existe, muestra un mensaje de error.
# - El número de caracteres no es positivo (o cero), muestra un mensaje de error.
import os
import sys
def read_args():
"""
Función que lee los argumentos y los devuelve en una tupla.
Si detecta algún error en los argumentos alerta al usuario.
"""
path = os.path.dirname(os.path.abspath(__file__))
size = 500
# Lectura de los argumentos con control de errores
if 1 < len(sys.argv):
if os.path.exists(sys.argv[1]):
path = sys.argv[1]
else:
print('\033[91mLa ruta proporcionada no existe.\033[0m')
sys.exit(1)
if 2 < len(sys.argv):
if sys.argv[2].isdigit() and 0 <= int(sys.argv[2]):
size = int(sys.argv[2])
else:
print('\033[91mEl número de caracteres debe ser positivo.\033[0m')
sys.exit(1)
# Advertencia de argumentos innecesarios (no interrumpe)
if 3 < len(sys.argv):
print('\033[93mHay más argumentos de los necesarios (se ignoran).\n\033[0m')
return path, size
def search_files(path, size):
"""
Función que busca los archivos en la ruta indicada y los añade
al conjunto de archivos si su tamaño es inferior al indicado.
"""
files = set()
# Búsqueda de los archivos
for file in os.listdir(path):
file_path = os.path.join(path, file)
if os.path.isfile(file_path):
with open(file_path, 'r') as f:
if len(f.read()) <= size:
files.add(file)
return files
def main():
"""
Función principal del script.
"""
path, size = read_args()
files = search_files(path, size)
# Muestra los archivos encontrados
for file in sorted(files):
print(file)
if __name__ == '__main__':
"""
Punto de entrada del script.
"""
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment