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


import os
import csv

# =====================================================================
# НАСТРОЙКИ
# =====================================================================
folder_path = "Downloads_Bank_Docs" # Твоя папка со скачанными доками
csv_file = "docs.csv"               # Имя твоего сохраненного файла
output_file = "missing_report.txt"  # Куда сохраним список пропаж

# ВАЖНО: Впиши сюда точные названия колонок, как они написаны в Экселе!
col_status = "Статус"
col_filename = "Имя файла" # Или "Название документа" — посмотри в таблице
col_category = "Категория"
# =====================================================================

def main():
    if not os.path.exists(folder_path):
        print(f"[!] Ошибка: Папка {folder_path} не найдена!")
        return

    # Собираем список файлов в папке в множество (для быстрого поиска)
    local_files = set(os.listdir(folder_path))
    missing_docs = []

    print(f"--- Начинаю сверку ---")
    print(f"Файлов в папке: {len(local_files)}")

    try:
        # Открываем CSV. Русский Excel обычно сохраняет CSV с разделителем ";"
        # Кодировка utf-8-sig нужна, чтобы не было кракозябр, если сохраняла как CSV UTF-8
        with open(csv_file, mode="r", encoding="utf-8-sig") as f:
            reader = csv.DictReader(f, delimiter=";")
            
            # Если разделитель всё-таки запятая (зависит от настроек винды), 
            # скрипт может не найти колонки. Если что - поменяй ";" на ","
            
            for row in reader:
                status = row.get(col_status, "")
                
                # Проверяем только действительные
                if status and "Действителен" in status:
                    # Достаем имя файла и убираем лишние пробелы по краям
                    file_name = row.get(col_filename, "").strip()
                    category = row.get(col_category, "Не указана")
                    
                    if file_name:
                        # СВЕРКА: есть ли файл в папке?
                        if file_name not in local_files:
                            info = f"Категория: {category} | Пропал файл: {file_name}"
                            missing_docs.append(info)
                            print(f"[!] {info}")

        # Сохраняем отчет
        print(f"\nИтого не хватает: {len(missing_docs)} файлов.")
        with open(output_file, mode="w", encoding="utf-8") as out:
            for doc in missing_docs:
                out.write(doc + "\n")
                
        print(f"Список сохранен в файл: {output_file}. Можешь смело идти качать!")

    except FileNotFoundError:
        print(f"[!] Бро, файл {csv_file} не найден. Точно сохранила его в папку со скриптом?")
    except Exception as e:
        print(f"[!] Ошибка при чтении файла: {e}")
        print("Подсказка: Проверь, правильно ли вбиты названия колонок в настройках (col_status и т.д.).")

if __name__ == "__main__":
    main()





import os
import shutil

# =====================================================================
# НАСТРОЙКИ
# =====================================================================
source_folder = "Downloads_Bank_Docs"  # Папка, где сейчас лежат все файлы
files_per_folder = 40                  # По сколько файлов класть в каждую папку
# =====================================================================

def split_into_batches():
    if not os.path.exists(source_folder):
        print(f"[!] Ошибка: Папка {source_folder} не найдена.")
        return

    # Получаем список всех файлов (именно файлов, игнорируем папки, если они там есть)
    all_files = [f for f in os.listdir(source_folder) 
                 if os.path.isfile(os.path.join(source_folder, f))]
    
    total_files = len(all_files)
    if total_files == 0:
        print("[!] В папке нет файлов для перемещения.")
        return

    print(f"Найдено файлов: {total_files}. Начинаю разбивку по {files_per_folder} шт...")

    # Счётчик для папок и для файлов
    folder_count = 0
    
    for i in range(0, total_files, files_per_folder):
        folder_count += 1
        # Создаем имя для новой подпапки: Batch_1, Batch_2 и т.д.
        new_folder_name = os.path.join(source_folder, f"Batch_{folder_count}")
        
        if not os.path.exists(new_folder_name):
            os.makedirs(new_folder_name)
        
        # Вырезаем кусок списка из 40 файлов
        batch = all_files[i : i + files_per_folder]
        
        for file_name in batch:
            old_path = os.path.join(source_folder, file_name)
            new_path = os.path.join(new_folder_name, file_name)
            
            # Перемещаем файл
            try:
                shutil.move(old_path, new_path)
            except Exception as e:
                print(f"    [!] Ошибка при перемещении {file_name}: {e}")

    print(f"\n--- Готово! ---")
    print(f"Все файлы разложены по {folder_count} папкам внутри '{source_folder}'.")

if __name__ == "__main__":
    split_into_batches()