Преобразовать имя папки в ключ, а изображения внутри папки преобразовать в массив

#arrays #python-3.x #dictionary #python-3.6

#массивы #python-3.x #словарь #python-3.6

Вопрос:

Я пишу скрипт для преобразования имени папки в ключ словаря, а внутри изображений в каждой папке будут значения массива каждого ключа. Как я могу этого добиться?

Пример Angelina — это имя папки, а внутри ее папки есть изображения, принадлежащие ей. Затем этот процесс остается неизменным для всей папки.

 idendities = {
    "Angelina": ["img1.jpg", "img2.jpg", "img4.jpg", "img5.jpg", "img6.jpg", "img7.jpg", "img10.jpg", "img11.jpg"],
    "Scarlett": ["img8.jpg", "img9.jpg", "img47.jpg", "img48.jpg", "img49.jpg", "img50.jpg", "img51.jpg"]}
  

Ответ №1:

Вы можете сделать это примерно так —

 import os

key_value_map = {}

# Change root with your root directory name
root = 'test'

dir_list = os.listdir(root)

for dir in dir_list:
    files_list = os.listdir(os.path.join(root, dir))
    jpg_files = []

    for f in files_list:
        if f.endswith(".jpg"):
            jpg_files.append(f)

    key_value_map[dir] = jpg_files


print(key_value_map)
  

Предполагая, что у вас есть два каталога, а именно Angelina amp; Scarlet в вашем рабочем каталоге.

Комментарии:

1. На самом деле, существует 1000 папок разных знаменитостей, и я не могу ввести имя всей папки. Есть ли способ преобразовать имя папки в ключ словаря?

2. Вам не нужно. Метод os.listdir() сделает это за вас. Допустим, у вас есть корневая папка с именем «root», где у вас есть папка со всеми этими знаменитостями. Теперь, если корневая папка находится в вашем рабочем каталоге, все, что вам нужно сделать, это вызвать os.listdir(‘root’). Он должен вернуть вам каталог списка знаменитостей. Вы также можете использовать абсолютный путь к корневой папке, если она находится в другом месте. Итак, если вы будете следовать этому, все, что вам нужно сделать, это изменить одну строку в моем коде: dir_list = os.listdir(‘ROOT_DIR_PATH’) Остальное должно быть таким же.

3. Пожалуйста, сообщите, что папка и изображения присутствуют в этом каталоге, но это выдает ошибку FileNotFoundError: [Ошибка 2] Нет такого файла или каталога: ‘TheodoreRoosevelt’

4. Это потому, что дочерние каталоги не связаны с корневым путем. Я немного изменил фрагмент, пожалуйста, попробуйте его использовать. Замените значение root переменной именем / путем каталога, в который вы поместили каталог всех этих знаменитостей. Это должно выполнить работу. Но помните, что он будет возвращать только имена файлов jpg. Если вам нужно получить доступ к этим файлам, вы должны использовать os.path.join() относительно корневого каталога.

5. Мне нужна еще одна помощь, пожалуйста. Я хочу, чтобы, когда одна пара значений ключа заканчивалась, вторая пара значений ключа начиналась со следующей строки, потому что теперь я получаю сообщение об ошибке, но условие не является хорошим