Я пытаюсь переименовать некоторые файлы, основываясь на информации о них, хранящейся в словаре json. Имена файлов в настоящее время похожи на «00016_930831_fa.png». У меня есть информация обо всех файлах, хранящихся в словаре, включая «факты», такие как имя (которое будет «00016_930831_fa_a») и «личные факты», такие как пол (который будет «мужской» или «женский»)).
Файл json выглядит так, где он содержит факты о файле:
json_data = {
"images":
[
{
"facts":
[
{
"relative": "data/images/00001/00001_930831_fa_a.ppm.bz2",
"disc": "1",
"pitch": "0",
"nose_coordinates": "268",
"subject": "cfrS00001",
"compression": "bzip2",
"yaw": "0",
"right_eye_coordinates": "202",
"environment": "cfrE00001",
"mouth_coordinates": "266",
"sensor": "cfrN00002",
"roll": "0",
"beard": "No",
"format": "ppm",
"pose": "fa",
"collection": "cfrC00001",
"illuminant": "cfrI00001",
"capture_time": "00:00:00",
"stage": "cfrT00001",
"capture_date": "08/31/1993",
"recording": "cfrR00002",
"weather": "inside",
"left_eye_coordinates": "326",
"expression": "fa",
"mustache": "No",
"glasses": "Yes"
}
],
"base": "00001_930831_fa_a",
"person_facts":
[
{
"gender": "Male",
"race": "White",
"id": "cfrS00001",
"yob": "1943"
}
],
"root": "...data",
"name": "00001"
}
]
}
... но это данные только для одного изображения, есть сотни изображений.
Для каждого из файлов, которые я хочу переименовать (называемых «qual_images» в коде ниже), я хочу найти пол, связанный с этим файлом, через словарь, а затем я хочу добавить M (если мужчина) или F (если женщина) в начале имени файла.
Это мой код до сих пор. Код ошибки является ошибкой атрибута и говорит, что в списке нет атрибутируемого объекта «ключ».
data = json.load(open('data.json'))
# the data is in the form of the json shown above.
# choosing, and making a list of, the neutral expression files that we want to search the disctionary for
from os import listdir
directory = '...'
qualified_people = list(fname for fname in listdir(directory) if fname.endswith('.png'))
#this is a list of about 100 photos, where their filenames and information are also stored in the json dictionary
# iterate through dictionary - if it finds an image that matches the name of a file on the qualified_people list , then look at the gender and change the filename accordingly
# trying to rename Mirta's photos to have M or F in them
import json
import dlib
import numpy as np
from skimage import io
import csv
import pandas as pd
import os
import glob, os
os.chdir("/Users/charlottepeart/Documents/Part 2/Python/")
#opening the big dictionary with all info
data = json.load(open('data.json'))
#print(data)
# choosing, and making a list of, the neutral expression files that we want to search the disctionary for
from os import listdir
directory = '/Users/charlottepeart/Documents/Part 2/Python/images_for_python/Mitra_stuff_again'
qualified_people = list(fname for fname in listdir(directory) if fname.endswith('.png'))
#print(qualified_people)
# iterate through dictionary - if it finds an image that matches the qualified people, then look at the gender
for i in qualified_people:
for j in data:
if i == data.key(name):
if data.key(gender) == female:
i.append(data['F'])
else:
i.append(data['M']) ```