从与JSON文件链接的静态文件夹中加载随机图像

时间:2018-12-17 12:47:12

标签: python json python-2.7 flask

我正在尝试基于rebuses用Python创建一个谜语游戏。

我有一个包含文件名和答案的JSON文件。我正在尝试创建游戏逻辑,该逻辑本质上是从静态文件夹加载随机图像,并将其链接到JSON文件和答案。正确的答案可以使您进入下一个答案。

我已经尝试了多种在线方法,这些方法可以从静态文件夹中加载随机图像和彼此独立的随机JSON对象,但是我不知道如何加载它们并使它们彼此关联。 / p>

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 :(得分:0)

如果您从静态文件夹中加载了随机图片,那么您应该已经拥有该图片的文件名。基于此,您可以迭代问题对象的列表,并使用带有该文件名的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,它似乎与显示名称相对应)。