For循环遍历图像文件夹并输出到单个JSON文件

时间:2019-06-26 10:08:14

标签: python json for-loop

我不是开发人员,并且我对编程的知识非常有限。我了解如何使用和操作python脚本,但是编写它们是我尚需学习的知识。请有人可以帮助一个新手:)

我正在使用视引擎的API来评估.jpg图像的大文件夹的清晰度和色彩属性。 API的文档仅提供一个小的脚本,用于一次评估一张图像。我已经与Sight Engines支持小组进行了交谈,他们不愿意提供用于批处理的脚本,考虑到所有其他API公司通常都会这样做,这很奇怪。

我需要一些帮助来创建一个for循环,该循环将使用python脚本遍历图像文件夹并将API结果输出到单个JSON文件中。对于如何构造此脚本的任何帮助,将深表感谢。

这是用于简单图像检查的视觉引擎代码:

from sightengine.client import SightengineClient

client = SightengineClient("{api_user}", "{api_secret}")
output = client.check('properties','type').set_file('/path/to/local/file.jpg')

谢谢

1 个答案:

答案 0 :(得分:0)

部分原因是猜测,因为我不确定output的外观。我假设它以json格式返回。如果是这种情况,您可以将各个json响应附加到单个json结构中,然后使用json.dump()写入文件。

因此,这只是一个猜测。另一个方面是您要遍历jpg文件,可以使用osfnmatch来完成。只需调整根目录/文件夹,使其在所有.jpg扩展名中搜索时就可以遍历。

from sightengine.client import SightengineClient
import os
from fnmatch import fnmatch
import json

client = SightengineClient("{api_user}", "{api_secret}")

# Get your jpg files into a list
r = 'C:/path/to/local'
pattern = "*.jpg"
filenames = []

for path, subdirs, files in os.walk(r):
    for name in files:
        if fnmatch(name, pattern):
            #print (path+'/'+name)
            filenames.append(path+'/'+name)


# Now iterate through those jpg files
jsonData = []            
for file in filenames:
    output = client.check('properties','type').set_file(file)
    jsonData.append(output)

with open('C:/result.json', 'w') as fp:
    json.dump(jsonData, fp, indent=2)