Как создать список с названиями папок в которые заходить нельзя

Рейтинг: 0Ответов: 1Опубликовано: 14.01.2023

Пишу скрипт для сортировки файлов по форматам. Скрипт создает папки с названиями ключей из словря:

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'],
    }

У меня есть две функции которые проходят по всем файлам и возвращают списки с названием и путем к каждому файлу и папке. Как мне сделать чтобы эти функции не заходили в папки из ключей словаря? В начале программы также есть функция для создания этих папок:

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

Ответы

▲ 1Принят

у item есть атрибут хранящий значения путя по частям ( вместе с названием файла ), можно использовать его для проверки на совпадение по папке

for item in path.rglob("*"):
        if not item.is_file() and 'zip' in path.parts[:-1]:
            folder_names.append(item.name)

На проверку совпадения элементов из разных массивов можно совершить через использование set

a = ['1', '3']
b = ['1', '2']
bool(set(a) & set(b)) # True