выходные данные json в указанном формате в Excel или csv

#python #python-3.x

Вопрос:

Я извлекаю данные каждого пользователя в m4-$u.json файл с помощью приведенного ниже сценария оболочки

 #!/bin/bash

USERID=ricardo.sanchez
PASSWORD=password
PORT=2728

for u in `cat user-list.txt`;
   do echo $u; 
   curl --user $USERID:$PASSWORD http://198.98.99.12:46567/$PORT/protects/$u | jq '.' > m4-$u.json
done 
 

Один для выходного m4-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"
  },
 

Теперь из выходных файлов json мне нужно скрытое, чтобы получить его excel (or) csv в формате ниже. Кроме $PORT $U того, в файле должны присутствовать переменные amp; оболочки excel (or) csv . Любая помощь будет оценена по достоинству.

ожидаемый результат

Ответ №1:

Смотрите ниже (создается csv-файл). Обратите внимание, что в данных нет $PORT и $U.

 data = [
    {
        "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"
    }
]
with open('out.csv', 'w') as f:
    headers = list(data[0].keys())
    f.write(','.join(headers)   'n')
    for entry in data:
        tmp = []
        for field in headers:
            tmp.append(entry[field])
        f.write(','.join(tmp)   'n')
 

out.csv

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

Комментарии:

1. Вы пытались запустить мой код «как есть» и получили эту ошибку? Не вызывайте файл csv — это модуль на python. Позвони ему json_to_csv.py . Вам нужно изменить код и загрузить в него json, созданный сценарием оболочки data .

2. посмотрите, как вы загружаете файл json в список диктовок. видишь programiz.com/python-programming/json

3.добавлено ниже, в то время как покоя нет, не могли бы вы, пожалуйста, помочь мне с этим. import json import pandas as pd with open('*.json') as json_file: ` данные = json.load(json_file)` df = pd.DataFrame(data)

4. нет необходимости в пандах. просто загрузите файл в список диктовок. смотрите пример по ссылке

5. Теперь вместо вывода в txt изменено на json ок попробуем по ссылке.