Подскажите как убрать ошибку
Traceback (most recent call last):
File "C:\Projects\Test_Project\Test.py", line 81, in <module>
shutil.move(file, path_folder_for_sort + '/' + name_group)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 822, in move
raise Error("Destination path '%s' already exists" % real_dst)
shutil.Error: Destination path '/Projects/Example/documents\activate_this.py' already exists
Вылетает такая ошибка в cmd. Я написал скрипт который сортирует по папкам файлы из словаря, скрипт запускается из cmd(python script_name /path/to/folder). Скорее всего ошибка в том что есть функция которая создаёт папки и если я 2 раза сортирую одну и ту же папку, то ошибка вылезает потому что эти папки из ключей словаря с форматами файлов уже существуют. Как я могу это исправить чтобы я мог сортировать одну папку несколько раз без ошибки? И может будут какие-то рекомендации по моему коду, я очень сомневаюсь что сделал его по стандартам)))
import os
import shutil
from pathlib import Path
from os.path import split
from sys import argv
def create_folders_from_groups(path_to_folder, folder_names):
for folder_for_sorted in folder_names.keys():
os.makedirs(path_to_folder + '/' + folder_for_sorted, exist_ok=True)
def parse_files(folder_path):
path = Path(folder_path)
file_names = []
file_paths = []
for item in path.rglob("*"):
if item.is_file():
file_names.append(item.name)
file_paths.append(Path(item))
return file_names, file_paths
def parse_folders(folder_path):
path = Path(folder_path)
folder_names = []
folder_paths = []
for item in path.rglob("*"):
if not item.is_file():
folder_names.append(item.name)
folder_paths.append(Path(item))
return folder_names, folder_paths
def sort_files(files_paths, groups_of_files):
pass
if __name__ == '__main__':
path_folder_for_sort = argv[-1]
groups_of_format = {
'images': ['JPEG', 'PNG', 'JPG', 'SVG', 'EXE'],
'video': ['AVI', 'MP4', 'MOV', 'MKV'],
'documents': ['DOC', 'DOCX', 'TXT', 'PDF', 'XLSX', 'PPTX', 'PY'],
'audio': ['MP3', 'OGG', 'WAV', 'AMR', 'XML'],
'archive': ['ZIP', 'GZ', 'TAR'],
}
groups_of_files = {
'images': [],
'video': [],
'documents': [],
'audio': [],
'archive': [],
}
set_of_formats = set()
set_of_unknown_formats = set()
files_names, files_paths = parse_files(path_folder_for_sort)
folders_names, folders_paths = parse_folders(path_folder_for_sort)
create_folders_from_groups(path_folder_for_sort, groups_of_format)
for file in files_names:
for name_group, formats in groups_of_format.items():
if file.split('.')[-1].upper() in formats:
groups_of_files[name_group].append(file)
set_of_formats.add(file.split('.')[-1])
elif file.split('.')[-1].upper() not in formats:
set_of_unknown_formats.add(file.split('.')[-1])
set_of_unknown_formats = set_of_unknown_formats.difference(set_of_formats)
print(groups_of_files)
print('Known formats of files: ', set_of_formats)
print('Unknown formats of files: ', set_of_unknown_formats)
for file in files_paths:
for name_group, formats in groups_of_files.items():
if split(file)[-1] in formats:
shutil.move(file, path_folder_for_sort + '/' + name_group)