# Para ejecutar este script se necesitara tener instalado "python3"
#
# Este script de python sirve para generar ficheros grandes.
#
#
# Puede servir para probar algun tipo de servicio o aplicación donde se necesiten
# archivos de prueba grandes para comprobar el correcto funcionamiento.
# Si comprimes el archivo pesará bastante poco, por lo que puede ser útil si no quieres que ocupe espacio en tu disco.
#
# Úsalo con responsabilidad.
#
# Para ejecutar este script en linux, pon en la terminal: $ python3 genfiles.py

import os

# Esta función revisa si ya existe un archivo con este nombre y le añade un numero al lado si así es.
def generate_filename(base_name: str, size_gb: int, extension: str = ".big") -> str:

    filename = f"{base_name}-{size_gb}GB{extension}"
    counter = 1

    while os.path.exists(filename):
        filename = f"{base_name}-{size_gb}GB({counter}){extension}"
        counter += 1

    return filename


def create_empty_file(filename: str, total_size_gb: int = 2):
    if total_size_gb <= 0:
        raise ValueError("El tamaño debe ser un entero positivo (> 0 GB).")

    total_size_gb = total_size_gb * 1024**3

    with open(filename, "wb") as f:
        f.seek(total_size_gb-1)
        f.write(b'\x00')

# Pedir tamaño con validación
while True:
    try:
        size_gb = int(input("¿Cuántos GB quieres que pese el archivo?: "))
        if size_gb <= 0:
            print("Error: introduce un número entero mayor que 0.")
            continue
        break
    except ValueError:
        print("Error de formato: introduce un número entero en GB.")

# Genera el nombre del archivo
filename = generate_filename("file_sample", size_gb)

# Crea el archivo
create_empty_file(filename, size_gb)
print(f"Archivo 'file_sample.big' creado con {size_gb} GB")