【问题标题】:how to merge multiple json files into a single file如何将多个json文件合并为一个文件
【发布时间】:2021-04-19 14:11:10
【问题描述】:

在一个目录中,我可以有多个文件,以一个例子...

chunk26.4ec7e9b2.json

{
    "/css/app.css": "/css/app.css?id=0f487b3ea1da478a47ce"
}

chunk57.9bc6ea1f.json

{
    "/js/app.js": "/js/app.js?id=f3eda47538cccd3ab358",
    "/js/empresa.js": "/js/empresa.js?id=2e389af5c75f398c7c97",
    "/js/passwordreset.js": "/js/passwordreset.js?id=2f48c7b9a250fb573381",
    "/js/prelogin.js": "/js/prelogin.js?id=4835300bf9075df04126"
}

如何将这些文件合并为一个有效的 json 文件,记住我可以有 N 个文件,它们的名称可以是任何东西,但总是带有 json 扩展名,这个结果将保存在当前目录中。

预期结果

{
    "/js/app.js": "/js/app.js?id=f3eda47538cccd3ab358",
    "/js/empresa.js": "/js/empresa.js?id=2e389af5c75f398c7c97",
    "/js/passwordreset.js": "/js/passwordreset.js?id=2f48c7b9a250fb573381",
    "/js/prelogin.js": "/js/prelogin.js?id=4835300bf9075df04126",
    "/css/app.css": "/css/app.css?id=0f487b3ea1da478a47ce"
}

重要的是最后一行不能有逗号。

由于我还在学习python,所以我得到了一部分,至少我可以看到每一行

import glob;
files=[];

for filename in glob.glob("*.json"):
    print(filename);
    files.append(filename);

print(files);

for filename in files:
    with open(filename, "r") as a_file:
          for line in a_file:
              print(line)

...但我真的不知道这是否是达到预期效果的最实用或最实用的方法

【问题讨论】:

  • 你能读取json文件,合并它们并放入一个新的json文件吗?
  • 是的,但是仅仅合并是不够的,因为在这个新文件中你不能有两组键,最后一行不能有逗号
  • 如果文件中有重复键,您希望发生什么?检查json 模块。逐个文件读取并组合成一个字典然后转储​​到文件中不会在最后一个之后产生逗号。
  • 看起来你使用python3,但你的问题被标记为python-2.7 - 为什么?
  • 因为我用的是2.7版本,不能换其他版本

标签: python json python-2.7


【解决方案1】:

您可以使用一个名为package-json-merge 的小工具。这是一个nodejs lib,但我觉得这里值得一提。

请注意,当我们谈论相似字段时,文件的顺序很重要

你的情况可能是这样的

package-json-merge chunk57.9bc6ea1f.json chunk26.4ec7e9b2.json > result.json

【讨论】:

  • 好建议!我要测试,我不知道这个pak
  • 请注意,这是一个 nodejs 库
【解决方案2】:
import json

files = ['file1.json', 'file2.json', 'file3.json']
combined_json = {}
for filename in files:
    with open(filename) as f:
        file_json = json.load(f)
    combined_json.update(file_json)

【讨论】:

  • 帮了大忙,只是缺少如何保存,但最终还是找到了,感谢您的帮助....with open('data.json', 'w') as f: json.dump(combined_json, f)
猜你喜欢
  • 2019-12-16
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多