首页 > 解决方案 > json 输出和文件名需要附加在 excel/csv 中

问题描述

我在文件夹中有多个json文件~/json-reports/。文件格式之一如下。

文件名: 2728-daniel.json

[
  {
    "depotFile": "//ABND/JJEB/...",
    "host": "*",
    "isgroup": "",
    "line": "16",
    "perm": "open",
    "user": "5G_USER_GROUP"
  },
  {
    "depotFile": "//LIB/...",
    "host": "*",
    "isgroup": "",
    "line": "19",
    "perm": "write",
    "user": "6G_USER_GROUP"
  },
  {
    "depotFile": "//AND/RIO/...",
    "host": "*",
    "isgroup": "",
    "line": "20",
    "perm": "write",
    "user": "AND_USER_GROUP"
  },

excel [或] csv 中的预期输出如下

在此处输入图像描述

port并且user-id需要从filename每个文件中挑选。请帮帮我。尝试了各种无济于事的事情,任何帮助将不胜感激。谢谢。

标签: pythonpython-3.xbashshell

解决方案


from pathlib import Path
import pandas as pd

paths = Path("json-reports/").glob("*.json")
dfs = {tuple(p.stem.split("-")): pd.read_json(p) for p in paths}
df = pd.concat([df.assign(port=p, userid=u) for (p, u), df in dfs.items()], axis=0)
print(df)

         depotFile host isgroup  line   perm            user  port  userid
0  //ABND/JJEB/...    *            16   open   5G_USER_GROUP  2728  daniel
1        //LIB/...    *            19  write   6G_USER_GROUP  2728  daniel
2    //AND/RIO/...    *            20  write  AND_USER_GROUP  2728  daniel

要在 CSV 文件中获取此信息:

df.to_csv("consolidated-reports.csv")

推荐阅读