Получение ошибки ключа при циклическом просмотре файлов - PullRequest
0 голосов
/ 13 февраля 2020

Я делаю al oop в некоторых файлах, проверяю расширение и создаю несколько папок на основе Dict в зависимости от расширения файла.

Ну, что-то почти go хорошо, но у меня есть эта ошибка при создании нового каталога.

У кого-нибудь есть идея?


Ошибка заключается в следующий

destination = os.path.join(dossier_final, fichiers[f_splited])

KeyError: '"C:/Users/thiba/Desktop/python/formation-developpeur-python/Section30/Exercice 23/01-sources/tri_fichiers_sources\\"'

Код:

    files = glob.glob(dossier, recursive=True)

    fichiers = {
        "mp3": "Musique",
        "wav": "Musique",
        "mp4": "Videos",
        "mov": "Videos",
        "jpg": "Images",
        "jpeg": "Images",
        "png": "Images",
        "pdf": "Documents",
        "json": "Ok"
    }

    for f in files:
        f_splited = f.split(".")[-1]
        if f_splited in fichiers:
            print("Ok")
        elif f.endswith(f_splited):
            destination = os.path.join(dossier_final, fichiers[f_splited])
            os.makedirs(destination, exist_ok=True)
            if destination:
                shutil.move(f, destination)

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Если ваш l oop достигает значения destination = os.path.join(dossier_final, fichiers[f_splited]), это означает, что f_splited не в fichiers. Поэтому попытка доступа к fichiers[f_splited] является ключевой ошибкой - такой вещи как fichiers[f_splited].

не существует.
0 голосов
/ 13 февраля 2020

Ваш суффикс f_splited будет иметь значение '' для этой папки.

Поскольку это неправильный тип формата файла в fichiers, вы получите ошибку ключа. Вы должны отфильтровать папки из вашего списка, созданного glob.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...