所以我有一个从 .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
函数:
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
替换了它,现在每次写入时,它都会添加一个标题。如何确保 header 仅写入一次?
最佳答案
您可以检查文件是否已经存在,然后不要调用 writheader()
,因为您正在使用追加选项打开文件。
类似的东西:
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']})
关于python csv,只写一次标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325622/