在python中将字典结果附加到csv

在python中将字典结果附加到csv,python,csv,Python,Csv,我想附加一个字典,我有一个CSV文件,如果我已经有一个标题行 如果一个值不存在,我想写'-999': SDict ={T1:'A',T2:'B',T4:'D') 其中CSV文件的头为 T1,T2,T3,T4,T5 7,8,9,10,11 预期的结果是 T1,T2,T3,T4,T5 7,8,9,10,11 A,B,-999,D,-999 我正试图通过代码实现这一点: import sys import os import csv def GetFileHeader(Fpath):

我想附加一个字典,我有一个CSV文件,如果我已经有一个标题行 如果一个值不存在,我想写
'-999'

SDict ={T1:'A',T2:'B',T4:'D')
其中CSV文件的头为

T1,T2,T3,T4,T5
7,8,9,10,11
预期的结果是

T1,T2,T3,T4,T5
7,8,9,10,11
A,B,-999,D,-999
我正试图通过代码实现这一点:

import sys
import os
import csv

def GetFileHeader(Fpath):
    i=10
    ResFile=open (Fpath, 'r+')
    HeaderDict={}
    r=csv.reader(ResFile)
    HeaderList = r.next()
    for Header in HeaderList:
        HeaderDict[Header]=i+1
    print HeaderDict
    ResFile.close()
    return HeaderDict


Fpath= r'Z:\temp\assaf\S2TTP\S2T_TP\modules\results\Y124\res.csv'

Header= GetFileHeader(Fpath)

with open(Fpath,'rb') as fin:
    dr = csv.DictReader(fin, dialect='excel')
    print dr
    print dr.fieldnames
# dr.fieldnames contains values from first row of `f`.
with open(Fpath,'ab+') as fou:
    dw = csv.DictWriter(fou, dialect='excel', fieldnames=dr.fieldnames)
    fieldnames=dr.fieldnames
    for K in fieldnames:
        dw.writerow(Header[k])

我认为你可以简单地做到:

import csv

SDict = {'T1': 'A', 'T2': 'B', 'T4': 'D'}

with open('file.csv', 'r+b') as f:
    header = next(csv.reader(f))
    dict_writer = csv.DictWriter(f, header, -999)
    dict_writer.writerow(SDict)

这是假设您使用的是Python2.X。另外,要小心那些不以换行符结尾的文件,否则可能会以
7,8,9,10,11A,B,-999,D,-999
之类的行结尾,谢谢,另一个与csv标题是否已经存在相关的问题是,在使用新列更新结果时是否可以附加标题,比如在第4行,我想将T6添加到header@user2740068:是的,行彼此独立,因此如果愿意,可以执行类似操作,例如执行
header.append('T6')
将T6添加到标题,然后再次添加
dict_writer=csv.DictWriter(f,header,-999)
使用新标题。my header是dictenery是否有方法比较两个标题并附加差异?请记住,这是一个结果文件,因为标题是测试,每隔一行是结果,我不希望我的标题(测试名称)改变位置,以便其他结果显示incorect@user2740068,你能再解释一下你想要什么吗?您希望整个文件中有一个标头还是多个标头?还有,您有多少个不同的结果字典?我正在单元上运行测试程序测试程序在字典中收集结果第一个单元创建csv结果文件和标题基于它运行的测试现在我运行第二个单元,希望在第一个单元下添加结果行,但对于第二个单元,我有一些附加测试需要为所有单元添加一个结果文件头dict writer向我保证每个测试结果都是一个接一个的&对于额外的测试,只有单元2会有结果,可以通过读取头然后比较循环来完成。字典的键认为这是一种简单的方法