Загрузить случайное изображение из статической папки, связанной с файлом JSON - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь создать загадочную игру на Python, основанную на ребусах .

У меня есть JSON-файл, содержащий имя файла и ответ.Я пытаюсь создать игровую логику, которая по сути загружает случайное изображение из статической папки и связывает его с файлом JSON и ответом.Правильные ответы могут привести вас к следующему.

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

json код:

{
"questions": [
    {
        "imageUrl": "/static/Beg-2-Differ.png"
        "imagename": "Beg-2-Differ.png",
        "answer": "beg to differ"
    },
    {
        "imageUrl": "/static/bote.png"
        "imagename": "Beginning-Of-The_End.png",
        "answer": "Beginning of the end"
    },
]
}

Если бы я мог указать в правильном направлении, как написатькод Python для решения этой проблемы мне очень поможет!

1 Ответ

0 голосов
/ 17 декабря 2018

Если вы загрузили случайное изображение из статической папки, то у вас уже должно быть имя файла для этого изображения.Основываясь на этом, вы можете перебирать список объектов вопроса и искать объект с imageUrl с таким именем.

Вы не показали код, который используете для загрузки случайного изображения,но при условии, что это выглядит примерно так:

import random
import os

static_folder = '/path/to/static'
random_image = random.choice(os.listdir(static_folder))

with open(os.path.join(static_folder, random_image), 'rb') as image_file:
    # Do something with the loaded image_file

Затем вы можете загрузить соответствующий объект вопроса следующим образом:

import json
import os

with open('/path/to/questions.json') as json_file:
    data = json.load(json_file)

    for question in data['questions']:
        if os.path.basename(question['imageUrl']) == random_image:
            # We've found the question object for the image

. Для сравнения используется имя файла imageUrl.который я предполагаю, соответствует фактическому имени файла на диске (а не imagename, который, кажется, соответствует отображаемому имени).

...