Загрузка данных


import base64
import os


def docx_to_text(input_docx_path, output_txt_path):
    """Кодирует .docx файл в текстовый файл Base64."""
    if not os.path.exists(input_docx_path):
        print(f"Ошибка: Файл '{input_docx_path}' не найден.")
        return

    with open(input_docx_path, "rb") as docx_file:
        # Читаем бинарные данные файла
        binary_data = docx_file.read()
        # Кодируем в base64 (получаем байтовую строку)
        base64_bytes = base64.b64encode(binary_data)
        # Декодируем в обычную строку текста (utf-8)
        base64_text = base64_bytes.decode("utf-8")

    with open(output_txt_path, "w", encoding="utf-8") as txt_file:
        txt_file.write(base64_text)

    print(
        f"Успешно! Файл зашифрован в текст и сохранен в: '{output_txt_path}'"
    )
    print("Теперь вы можете скопировать содержимое этого файла.")


def text_to_docx(input_txt_path, output_docx_path):
    """Декодирует текстовый файл Base64 обратно в .docx."""
    if not os.path.exists(input_txt_path):
        print(f"Ошибка: Текстовый файл '{input_txt_path}' не найден.")
        return

    with open(input_txt_path, "r", encoding="utf-8") as txt_file:
        base64_text = txt_file.read()

    try:
        # Переводим текст обратно в байты base64 и декодируем в исходный бинарник
        binary_data = base64.b64decode(base64_text.encode("utf-8"))
    except Exception as e:
        print(
            f"Ошибка при дешифровке: Текст поврежден или это не Base64. Подробнее: {e}"
        )
        return

    with open(output_docx_path, "wb") as docx_file:
        docx_file.write(binary_data)

    print(f"Успешно! Файл восстановлен и сохранен как: '{output_docx_path}'")


if __name__ == "__main__":
    print("Выберите режим работы:")
    print("1 — Закодировать .docx в текст")
    print("2 — Декодировать текст обратно в .docx")

    choice = input("Введите цифру (1 или 2): ").strip()

    if choice == "1":
        docx_path = input(
            "Введите путь к исходному .docx файлу: "
        ).strip(  # Например: document.docx
            '"'
        )
        txt_path = input(
            "Введите путь для сохранения текста (.txt): "
        ).strip(  # Например: encoded.txt
            '"'
        )
        docx_to_text(docx_path, txt_path)

    elif choice == "2":
        txt_path = input(
            "Введите путь к текстовому файлу с кодом: "
        ).strip(  # Например: encoded.txt
            '"'
        )
        docx_path = input(
            "Введите путь для сохранения нового .docx: "
        ).strip(  # Например: restored.docx
            '"'
        )
        text_to_docx(txt_path, docx_path)

    else:
        print("Неверный выбор.")