【问题标题】:For loop to iterate through a folder of images and output into a single JSON fileFor 循环遍历图像文件夹并输出到单个 JSON 文件中
【发布时间】:2023-03-20 22:23:01
【问题描述】:

我不是开发人员,我的编程知识非常有限。我了解如何使用和操作 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')

谢谢

【问题讨论】:

  • 能否用您当前使用的代码更新问题?
  • 不要道歉,但提供一些代码 :) 调用如何查找一张图片?到目前为止,您尝试了什么?
  • 抱歉,应该添加代码。我对如何遍历文件感到困惑。我仍在努力通过 w3schools 的“python for loops”,而且我还无法理解从哪里开始。任何帮助将不胜感激。

标签: python json for-loop


【解决方案1】:

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

【讨论】:

  • 感谢您的回复,并为延迟回复表示歉意。上面的脚本会运行,但它不会从目录中提取图像。它只返回一个结果,这是我几天前在测试运行期间使用的最后一张图像。它似乎从对 API 服务器发出的最后一个请求中获取信息,而不是遍历本地目录。关于解决方案的任何想法?谢谢
  • 也没有使用上述脚本创建的输出文件
  • 已排序,效果很好,这是用户错误而不是您的代码。谢谢
猜你喜欢
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多