Python:无法从API打印不同的JSON响应

Python:无法从API打印不同的JSON响应,python,json,loops,response,Python,Json,Loops,Response,我编写了简单的python脚本来读取图像中licenseplate中的字母和数字,要读取licenseplate,我将其发送到图像识别API,它们将返回我使用的JSON响应 这是完整的代码: import glob import requests import json import time import os import cv2 import numpy as np def main(): result = [] regions = ['id'] time_to_

我编写了简单的python脚本来读取图像中licenseplate中的字母和数字,要读取licenseplate,我将其发送到图像识别API,它们将返回我使用的JSON响应

这是完整的代码:

import glob
import requests
import json
import time
import os
import cv2
import numpy as np

def main():
    result = []
    regions = ['id']
    time_to_wait = np.inf
    time_counter = 0

    while True:
        files = glob.glob(os.path.join("./path_to_imagedir/*.jpg"))
        files.sort(key=os.path.getmtime)
        for file in files:
            if os.path.isfile(file):
                with open(file, 'rb') as fp:
                    response = requests.post(
                        'https://MY_API/',
                        data=dict(regions=regions),
                        files=dict(upload=fp),
                        headers={'Authorization': 'Token ' + 'XXX'})
                    result.append(response.json())
                    resp_dict = json.loads(json.dumps(result, indent=2))
                    if resp_dict[0]['results']:
                        num = resp_dict[0]['results'][0]['plate']
                        print(f"detected number:  {num}")
                    os.remove(file)

        time.sleep(1)
        time_counter += 1
        if time_counter > time_to_wait: break
        print("waiting for file... ")

if __name__ == '__main__':
    main()
当我运行此代码时,它将在终端上显示如下响应:

waiting for file... 
waiting for file... 
waiting for file... 
detected number:  b1962ub
waiting for file... 
waiting for file... 
waiting for file... 
waiting for file... 
detected number:  b1962ub
waiting for file... 
waiting for file... 
waiting for file... 
waiting for file...
我认为它的作品很好,但问题是为什么检测到的数字打印相同的数字在不同的图像不同的数字?我不知道是怎么回事

任何帮助都将受到感谢!
谢谢

您一直在添加结果,但您总是看相应的[0],所以您总是看同一项。相反,请查看resp_dict[-1],这样您将看到最新的项目

因此:

if resp_dict[0]['results']:
                        num = resp_dict[0]['results'][0]['plate']
                        print(f"detected number:  {num}")
应该是这样的:

if resp_dict[-1]['results']:
                        num = resp_dict[-1]['results'][0]['plate']
                        print(f"detected number:  {num}")

您需要在循环中清除results=[],而不是在循环外部,否则您会将新结果追加到列表中,但只会在[0]处显示第一个结果,如何清除results=[]?是的,将results=[]放入for file in files块中的文件中。是的,它的结果与答案相同,不适用于文件中的多个图像。如何做到这一点?您是否试图在一个JPEG文件中分离多个图像?我对图形文件格式了解不多,不知道它们是否在内部自然支持多个图像,或者你必须用图像处理软件对它们进行数字分割。啊,我明白了,它只适用于一个图像输入,但不适用于多个输入,只是你读了第一次尝试的响应,而不是最后一次尝试的响应。如何使它与多个输入一起工作@你是什么意思?多输入在哪里?对不起,我的意思是如何使它与文件夹中的许多图像一起工作@纳尔曼