如何将 JSON 对象键写入 CSV 文件?

目前正在编写脚本以从在线环境资产列表中查询一些资产信息。这是输出大量 JSON 对象数据的脚本。忽略一些未使用的导入。


(注意 for 的方法tenableIO是 pyTenable 包的一部分,但只知道它返回 JSON 对象,所以我不一定需要使用该json.load函数。)


from pprint import pprint

from tenable.io import TenableIO

import time

import json

import os

import datetime

import csv


# filter variables to request specific assets from the api


last_month = int(time.time()) - 2629743

source_list = ["AZURE"]


# TenableIO by default uses environmental variables stored locally for api keys


tio = TenableIO()


for asset in tio.exports.assets(sources=source_list, updated_at=last_month):

    hostname = asset['hostnames']

    ipv4 = asset['ipv4s']

    print(hostname, ipv4)

该脚本的大部分直接来自关于如何导出资产列表的可靠文档。我遇到的问题是资产 JSON 数据的输出。


该脚本似乎正确解析了 json 数据并按预期返回以下输出(使用填充名称和 IP,因为这是私有数据)


['abc123'] ['XX.XX.XX.XX']

['def456'] ['XX.XX.XX.XX']

['ghi789'] ['XX.XX.XX.XX', 'YY.YY.YY.YY', 'ZZ.ZZ.ZZ.ZZ']

如何获取此输出并将其写入 csv 文件?更具体地说,我如何才能让第 1 列作为主机名,第 2 列作为 ip 地址,其中多个值与其键一起存储,而不是作为单独的列?


即 csv 中的此表格格式:


Hostnames | IP Address

1. abc123 | XX.XX.XX.XX

2. def456 | XX.XX.XX.XX

3. ghi789'| XX.XX.XX.XX

            YY.YY.YY.YY

            ZZ.ZZ.ZZ.ZZ

4. jkl123 | XX.XX.XX.XX


慕娘9325324
浏览 110回答 1
1回答

绝地无双

如果将输出写入 csv 是你想要的,你可以实现 python csv 模块import csvfields = ['Hostnames', 'IP Address']filename = "myfile.csv"li1 = [['abc123'],['XX.XX.XX.XX']]li2 = [['def456'],['XX.XX.XX.XX']]li3 = [['ghi789'],['XX.XX.XX.XX']]li4 = [None, ['YY.YY.YY.YY']]li5 = [None, ['ZZ.ZZ.ZZ.ZZ']]rows = [li1, li2, li3, li4, li5]with open(filename, 'w') as csvfile:      csvwriter = csv.writer(csvfile)       csvwriter.writerow(fields)    for row in rows:           csvwriter.writerow(row)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python