将csv转换为json作为字典密钥对列表(python)

将csv转换为json作为字典密钥对列表(python),python,Python,尝试创建一个python脚本,将目录中的所有csv文件转换为json格式。json输出应该是密钥对值的列表,如下所示 [{"No.": "1", "Time": "0", "Source": "192.168.252.40", "Destination": "112.156.122.25", "Protocol": "TCP", "Length": "64", "Info": "9145 > 2323 [SYN] Seq=0 Win=12713 Len=0 [ETHERNET FRAME

尝试创建一个python脚本,将目录中的所有csv文件转换为json格式。json输出应该是密钥对值的列表,如下所示

 [{"No.": "1", "Time": "0", "Source": "192.168.252.40", "Destination": "112.156.122.25", "Protocol": "TCP", "Length": "64", "Info": "9145 > 2323 [SYN] Seq=0 Win=12713 Len=0 [ETHERNET FRAME CHECK SEQUENCE INCORRECT]", "label": "normal"},{"No.": "2", "Time": "0.000615", "Source": "192.168.252.40", "Destination": "115.36.214.222", "Protocol": "TCP", "Length": "64", "Info": "9145 > 23 [SYN] Seq=0 Win=12713 Len=0 [ETHERNET FRAME CHECK SEQUENCE INCORRECT]", "label": "normal"}]
在这里查看了一些示例,但只成功地转换了单个文件,并将json输出作为单独行上的键值对,如下所示

{"No.": "No.", "Time": "Time", "Source": "Source", "Destination": "Destination", "Protocol": "Protocol", "Length": "Length", "Info": "Info", "label": "label"}
{"No.": "1", "Time": "0", "Source": "192.168.252.40", "Destination": "112.156.122.25", "Protocol": "TCP", "Length": "64", "Info": "9145 > 2323 [SYN] Seq=0 Win=12713 Len=0 [ETHERNET FRAME CHECK SEQUENCE INCORRECT]", "label": "normal"}
{"No.": "2", "Time": "0.000615", "Source": "192.168.252.40", "Destination": "115.36.214.222", "Protocol": "TCP", "Length": "64", "Info": "9145 > 23 [SYN] Seq=0 Win=12713 Len=0 [ETHERNET FRAME CHECK SEQUENCE INCORRECT]", "label": "normal"}
到目前为止,我掌握的代码是

import csv
import json

csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')

fieldnames = ("No.","Time","Source","Destination","Protocol","Length","Info","label")
reader = csv.DictReader( csvfile, fieldnames)
for row in reader:
    json.dump(row, jsonfile)
    jsonfile.write('\n')

在写出之前,您需要先读入整个输入,例如:

from csv import DictReader
import json

fieldnames = ("No.","Time","Source","Destination","Protocol","Length","Info","label")

with open('file.csv', 'r') as fd:
  data = list(DictRead(fd, fieldnames))

with open('file.json', 'w') as fd:
  json.dump(data, fd)

我不确定这里出了什么问题。您的文件看起来像什么?@AdamSmith输出json文件是csv文件每行的字典,如上所示。我希望csv的每一行都是列表中的一个元素。我的意思是,这是一个普通的csv文件,有8列标题和2行数据。我整理了我试图实现的第一个示例。我看到了!好的,太好了,请客,谢谢!答覆获接纳及投赞成票