Загрузка данных
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()