python写dictreader到csv文件

时间:2013-05-28 14:39:49

标签: python csv python-2.4

我正在使用python 2.4并尝试将unix last命令的值导出到csv文件。我无法弄清楚如何让它实际将每行写入csv文件,任何帮助将不胜感激!

import csv

def check(user,logfile,name):
    logfile.write('********' + name + '*********\n')
    g = subprocess.Popen(["last",user], stdout=subprocess.PIPE)
    stdout, stderr = g.communicate()
    reader = csv.DictReader(stdout.splitlines(),
                            delimiter=' ', skipinitialspace=True,
                            fieldnames=['id', 'pts', 'cpu',
                                        'day', 'month', 'date',
                                        'time', 'dash', 'off',
                                        'loggedin', 'test1', 'test2'])

    writer = csv.writer(open('dict.csv','wb'))
    for row in reader:
        writer.writerow(row)

1 个答案:

答案 0 :(得分:4)

您需要使用csv.DictWriter()代替(使用匹配的字段名称),或将字典行转换为序列:

writer.row([value for key, value in sorted(row.items())])
例如,

将输出按其键排序的值。

使用DictWriter可能非常简单:

writer = csv.DictWriter(open('dict.csv','wb'), fieldnames=reader.fieldnames)

它会以与DictReader()类所期望的相同的顺序写出完全相同的字段。