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

标签 python json for-loop

我不是开发人员,我对编程的了解非常有限。我了解如何使用和操作 python 脚本,但是编写它们是我尚未学习的东西。请有人能帮助一个菜鸟 :)

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

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

这是一个简单的图像检查的 sightengine 代码:

from sightengine.client import SightengineClient

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

谢谢

最佳答案

这部分是一种猜测,因为我不知道 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)

关于python - For 循环遍历图像文件夹并输出到单个 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56770215/

相关文章:

c++ - 通过引用传递 vector 并在基于范围的 for 循环中更改其值?

Javascript 替换子/循环问题

python - 在 python 中优化子数组最大/最小分析

javascript - NodeJs : can't write a file

json - 快速解析 JSON

java - 找不到具有不同 buildvariant 的包名称 "...."的匹配客户端

java - StringBuffer循环设置

python - 将 `defaultdict` 公开为常规 `dict`

python - 如何在 QComboBox 中居中文本?

python - 如何使用标准库包名称解决 Python 包中的命名空间冲突?