#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. Мне нужна еще одна помощь, пожалуйста. Я хочу, чтобы, когда одна пара значений ключа заканчивалась, вторая пара значений ключа начиналась со следующей строки, потому что теперь я получаю сообщение об ошибке, но условие не является хорошим