【问题标题】:Parse a Directory of json files with python使用 python 解析 json 文件的目录
【发布时间】:2016-09-16 02:31:09
【问题描述】:

我一直在寻找如何做到这一点,但我做不到。 我有一个 .json 文件的目录,我应该解析每个文件。 我知道我必须使用 glob 和 os。 我觉得它背后的逻辑是遍历目录,在读取每个文件时提取所需的数据,但我找不到任何帮助我的地方,也不知道语法。 如果它违反堆栈规则并且人们认为这是我在寻求家庭作业的答案,那我可以在其他地方搜索,这不是我不明白的家庭作业。

【问题讨论】:

  • 您看过json 模块吗?这就是整个事情的症结所在。如果您使用glob,我怀疑您是否需要os 模块;你需要一个或另一个,但不是两者都需要。添加open函数,我想就是这样。
  • 与其尝试一次做所有事情,不如一步一步开始?从仅在 一个 文件上使用open 开始,并将其传递给json.load。现在你有了一个函数,你可以继续访问静态列表,然后是 glob 生成的生成列表。
  • json lib 是你最好的朋友,你可以在这里与ossys 进行管弦乐编排

标签: python json parsing


【解决方案1】:

假设您的 JSON 文件以 .json 扩展名命名,并且它们与您运行脚本的目录位于同一目录中:

import json
from glob import glob

data = []
for file_name in glob('*.json'):
    with open(file_name) as f:
        data.append(json.load(f))

这将为您提供已解析 JSON 对象的列表(字典和/或列表)。

如果您需要访问另一个目录中的文件,您可以像这样构建您的 glob 模式:

import os.path

pattern = os.path.join('/path/to/json/files', '*.json')
for file_name in glob(pattern):
    ....

【讨论】:

    【解决方案2】:

    我知道这是一个老问题,但我一直在为非常相似的问题而苦苦挣扎。我最终为此编写了自己的脚本: https://github.com/tmdag/makedirtree

    使用 Unix 'tree' 命令创建目录并重新创建目录更容易

    pathlib.Path(s_path).mkdir(parents=True, exist_ok=True)
    

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多