当前位置: 首页 > 知识库问答 >
问题:

如何循环多个。json文件[重复]

吉泰宁
2023-03-14

我在同一个目录中有几个具有相同结构的。json文件。我想从每个json文件的一些键创建一个具有值的唯一csv文件。

通过一个文件循环,一切都正常。下面是脚本的快照:

import json, os
import csv

input_file = open ('JSON/test.json')
json_array = json.load(input_file)
object_list = []

for obj in json_array:

    for item in obj['objects']:
        object_details = {"_system_object_id":None,"preview_url":None,"original_download_url":None,"original_url":None}
        object_details['_system_object_id'] = item['_system_object_id']
        try:
            object_details['preview_url'] = item['do']['do_digitalobject'][0]['versions']['preview']['url']
        except:
            print("not found")
        try:
            object_details['original_download_url'] = item['do']['do_digitalobject'][0]['versions']['original']['download_url']
        except:
            print("not found")
        try:
            object_details['original_url'] = item['do']['do_digitalobject'][0]['versions']['original']['url']
        except:
            print("not found")

        #object_details['type'] = item['type']
        object_list.append(object_details)

    print(object_list)

共有1个答案

廉雅惠
2023-03-14

使用listdir,可以找到指定目录中的所有.json文件,然后遍历这些文件并应用逻辑:

from os import listdir
from os.path import isfile, join
import json

dir_path = "full/path/to/dir"
object_list = []
# get all json full paths of the json files in dir_path
all_json_files = [join(dir_path, f) for f in listdir(dir_path) if isfile(join(dir_path, f)) and f.endswith(".json")]

# iterate over the paths and apply your logic
for file_path in all_json_files:
    with open(file_path) as input_file:
        json_array = json.load(input_file)
        for obj in json_array:
            # your business logic
            object_list.append(object_details)
print(object_list)
 类似资料:
  • 但我得到一个错误说 所以我尝试使用另一个变量的这是但是我仍然收到相同的错误消息 我如何解决这个问题?或者有什么其他方法我可以用来做这件事? 我在这里使用的两个表在字段User_Name和Transaction_Date上具有相同的值,如所示

  • 我有这个片段,我想知道如何遍历这个文件的令牌。正如你们所见,我用扫描仪读了一遍,我把infle当成了未解析的。这是可以理解的,因为infle是一个扫描仪,我的意思是,一个对象,但我该如何使循环遍历文件?其思想是读取包含多个单词的文件内容,将每个单词转换为小写,并将其全部放入哈希集中。 您将其放入java类中,它将生成未解析的infle。请帮我克服这一点。如果您在复制异常时遇到问题,请告诉我。 提前

  • 问题内容: 我有四个foreach循环,这些循环遍历集合并根据条件进行操作。 这是我现在正在编写的代码: 主要对象(代码中的对象)来自第三方提供程序SDK,因此我无法在该部分上进行任何更改。我想问一下Stack Overflow社区是否有更好的方法来打破所有四个foreach循环。或者,如果还有其他方法可以重构此代码,使其更具可读性和可维护性。 问题答案: 在最外面的循环上使用标签,当您想跳出所有

  • 问题内容: 给定以下代码(不起作用): 有没有办法使这项工作?或者,如果用户满意,我是否需要做一次检查以打破输入循环,然后再进行另一项(更受限制的)签入外部循环以一起打破? 问题答案: 我的第一个直觉是将嵌套循环重构为一个函数,然后使用它来分解。

  • 我需要根据数据库查询的结果集创建可变数量的JSON对象和JSON数组。JSON格式看起来与以下用于谷歌图表的格式非常相似。 我的问题是,我觉得这应该是一个简单的答案,如何在for循环中创建多个具有唯一名称的JSON对象?我的尝试:

  • 问题内容: 我有许多文本文件,希望将它们放入for循环中。 我从上一个活动中获得了一个具有资源名称的Extra,并且有一个数组,其原始资源中的文本文件的资源名称来自{d0,d1,d2,d3,…,d79},我想检查名称和数组名称,然后将查找名称放入资源!我的代码(res = R.raw。(d [i]))出现错误: 问题答案: 您可以使用getIdentifier(字符串名称,字符串defType,字