import os
import random

# Установите полный путь к каталогу, в котором нужно искать самый большой файл.
CATALOG_PATH = "/var/data"

# Полный путь до файла результата.
RESULT_FILE = "/var/result/data.txt"


def find_largest_file(directory):
    """Ищет самый большой по объему файл в заданном каталоге и его подкаталогах."""

    largest_file = None
    max_size = 0

    for root, _, files in os.walk(directory):
        for file in files:
            # Полный путь к текущему файлу.
            filepath = os.path.join(root, file)

            try:
                file_size = os.stat(filepath).st_size

                if file_size > max_size:
                    max_size = file_size
                    largest_file = (filepath, file_size)

            except OSError as e:
                print(f"Ошибка при открытии файла '{filepath}': {e}")

    return largest_file


def copy_file(src, dst):
    """Копирует содержимое файла src в файл dst."""

    try:
        with open(dst, "wb") as f_dst, open(src, "rb") as f_src:
            while chunk := f_src.read(4096):
                f_dst.write(chunk)

        print(f"Файл '{src}' успешно скопирован в '{dst}'.")

    except Exception as e:
        print(f"Ошибка при копировании файла '{src}': {e}")


def main():
    largest_file_path = find_largest_file(CATALOG_PATH)

    if largest_file_path:
        src_path, _ = largest_file_path
        dst_path = RESULT_FILE

        copy_file(src_path, dst_path)

    else:
        print("Нет файлов в каталоге.")


def generate_random_numbers(filename, count):
    """Функция генерирует случайные числа и записывает их в файл."""

    with open(filename, "w") as f:
        for _ in range(count):
            num = random.randint(0, 1000)
            f.write(str(num) + "\n")

    print(f"Случайные числа успешно записаны в '{filename}'.")


if __name__ == "__main__":
    generate_random_numbers("/var/data/data1.txt", 50)
    generate_random_numbers("/var/data/data2.txt", 75)
    generate_random_numbers("/var/data/data3.txt", 25)
    print("Генерация файлов завершена.")

    main()