【问题标题】:Find all the json files which are invalid in directory tree structure查找目录树结构中所有无效的json文件
【发布时间】:2020-10-14 14:25:08
【问题描述】:

我试图找出我的目录树中无效的 JSON 文件。我有 100 多个 JSON 文件,因此尝试查看是否有任何简单的方法可以运行一些 linux 命令来确定哪些 JSON 文件无效。我想知道所有这些文件名。

我试过这个命令,但这并没有在我的控制台上给我任何东西,而且我确实有一堆无效的 JSON 文件。

find . -name \*.json -exec echo {} \; -exec python -m json.tool "{}" \; 2>&1 | grep "No JSON" -B 1

我正在尝试在我的 Mac 上运行它。

【问题讨论】:

  • Mac 还是 Linux?它们是两种不同的环境。

标签: python json linux xargs


【解决方案1】:

在python中你可以这样做

#!/usr/bin/env python3

from pathlib import Path
import json

# scan subdirs from current directory
for jsonfile in Path(".").glob("**/*.json"):
    try:
        json.load(open(jsonfile))
        print(jsonfile, "success")
    except Exception as e:
        print(jsonfile, "fail", e)

【讨论】:

  • 如何在终端调用这个脚本?我收到以下错误“ImportError: No module name pathlib”
  • 哪个版本的python? pathlib 于 2014 年在 python 3.4 中引入。
  • 我不得不更新 python 并解决了这个问题。谢谢。
【解决方案2】:

bashzsh 中,使用jq 验证JSON 文件:

find . -name "*.json" -print0 | while IFS= read -d '' -r filename; do
    if ! jq . "$filename" >/dev/null 2>&1; then
        echo "$filename is invalid"
    fi
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 2012-11-17
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多