python csv,只写一次标题

标签 python csv

所以我有一个从 .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/

相关文章:

Python 2 维 FIFO

python - 你知道一个很棒的用于操作日期的 Python 库吗?

scala - 如何将 DataFrame 保存为压缩(gzipped)CSV?

android - 如何在android中读取csv文件?

Python CSV 模块 - 引号丢失

php - 将包含json的excel单元格转换成csv

python - 在 python 中的字典中移动引用的文件

python - Django 模板上的 Unicode 字符串显示

python - 将数据插入两列 csv

python - 从字典创建饼图并更改箭头