因此,我有一个从.Json创建CSV的程序。
首先,我加载json文件。
f = open('Data.json') data = json.load(f) f.close()
然后,如果找到了特定的关键字,便会通过它查找特定的关键字。我将与此相关的所有内容都写入.csv文件中。
for item in data: if "light" in item: write_light_csv('light.csv', item)
这是我的write_light_csv功能:
write_light_csv
def write_light_csv(filename,dic): with open (filename,'a') as csvfile: headers = ['TimeStamp', 'light','Proximity'] writer = csv.DictWriter(csvfile, delimiter=',', lineterminator='\n',fieldnames=headers) writer.writeheader() writer.writerow({'TimeStamp': dic['ts'], 'light' : dic['light'],'Proximity' : dic['prox']})
我最初使用的wb+是该模式,但是每次打开文件进行写入时,它都会清除所有内容。我将其替换为a,现在每次编写时都会添加一个标题。如何确保标头仅写入一次?
wb+
a
您可以检查文件是否已经存在,然后不调用,writeheader()因为您使用附加选项打开文件。
writeheader()
像这样:
import os.path file_exists = os.path.isfile(filename) with open (filename, 'a') as csvfile: headers = ['TimeStamp', 'light', 'Proximity'] writer = csv.DictWriter(csvfile, delimiter=',', lineterminator='\n',fieldnames=headers) if not file_exists: writer.writeheader() # file doesn't exist yet, write a header writer.writerow({'TimeStamp': dic['ts'], 'light': dic['light'], 'Proximity': dic['prox']})