首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大量文件的循环中的jsonDiff

大量文件的循环中的jsonDiff
EN

Stack Overflow用户
提问于 2021-01-19 04:31:34
回答 1查看 114关注 0票数 2

我们的目标是在两个文件夹中得到大约30'000个json文件的差异。在这两个文件夹中,它们的名称都是数字(1.json,2.json等)。所以基本上可以得到两个文件夹的差值。

我正在使用jsonDiff模块来获取差异,这对于单个文件很有效,但是我还没有找到在循环中使用该模块的方法。

代码语言:javascript
复制
f = open("/folder1/1.json")
fe = open("/folder2/1.json")
jyson1 = json.load(f)
jyson2 = json.load(fe)

print(diff(jyson1, jyson2))

编辑:因为我必须解析2个文件夹,所以我想我需要2个for循环,就像这样

代码语言:javascript
复制
for f in glob("/folder1/*.json"):
    with open(f) as fe:
        data_old = json.load(fe)

for e in glob("/folder2/*.json"):
    with open(e) as ee:
        data_new = json.load(fe)

我很难理解如何在这里使用diff()方法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-20 03:48:04

下面是一个代码片段,您可以从中进行操作。它还只测试两个文件夹中共有的文件(跳过一个文件夹中因任何原因而丢失的文件)。与您的代码片段相反,您需要在一个循环中工作,而不是在两个for循环中工作:

代码语言:javascript
复制
import os

names1 = os.listdir("folder1") # names of all json files in folder1
names2 = os.listdir("folder2") # names of all json files in folder2
commonnames = set(names1) & set(names2) # set of all file names which are in folder1 and folder2

for filename in commonnames:
  json1 = json.load(open(os.path.join("folder1", filename))
  json2 = json.load(open(os.path.join("folder2", filename))

  print(diff(json1, json2))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65781656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档