Advertisement
dim0ntei

Копирование файлов из директории

May 30th, 2023
580
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.88 KB | None | 0 0
  1. import os
  2. import shutil
  3. from pathlib import Path
  4.  
  5. def copy_media_files(src_folder, dest_folder):
  6.     # Определение форматов файлов для поиска
  7.     image_formats = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.ico', '.jfif', '.webp']
  8.     video_formats = ['.mp4', '.mkv', '.flv', '.avi', '.mov', '.wmv', '.m4v', '.webm', '.vob', '.mpg', '.mpeg']
  9.     media_formats = image_formats + video_formats
  10.  
  11.     # Создание папки назначения, если она не существует
  12.     Path(dest_folder).mkdir(parents=True, exist_ok=True)
  13.    
  14.     # Обход всех папок и подпапок
  15.     for dirpath, dirnames, filenames in os.walk(src_folder):
  16.         for filename in filenames:
  17.             # Проверка формата файла
  18.             if Path(filename).suffix.lower() in media_formats:
  19.                 src_file_path = os.path.join(dirpath, filename)
  20.                 dest_file_path = os.path.join(dest_folder, filename)
  21.  
  22.                 # Проверка наличия файла с таким же именем в папке назначения
  23.                 # и при необходимости добавление суффикса
  24.                 if Path(dest_file_path).exists():
  25.                     base_name = Path(filename).stem
  26.                     ext = Path(filename).suffix
  27.                     i = 1
  28.                     while Path(dest_file_path).exists():
  29.                         dest_file_path = os.path.join(dest_folder, f"{base_name}_{i}{ext}")
  30.                         i += 1
  31.  
  32.                 # Копирование файла
  33.                 shutil.copy2(src_file_path, dest_file_path)
  34.  
  35. # Использование функции
  36. src_folder = 'путь_к_исходной_папке'
  37. dest_folder = 'путь_к_целевой_папке'
  38. copy_media_files(src_folder, dest_folder)
  39.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement