python批量写入字典中的文件

时间:2013-10-30 19:41:06

标签: python dictionary

我目前正在逐字逐句写入字典中的csv文件。像这样:

writer = csv.writer(open(filename, 'a'))
    for key, value in mydict.items():
        writer.writerow([key, value])

我的问题是这样的:我的字典变大了(比如说~20 MB)我受linux机器中的堆空间限制。因此,在我编写之前,不是在我的字典中累积所有数据,而是在我的数据可用时立即将数据写入csv文件 - 从我的字典(只有一个记录长)。

现在,我看到了另一个问题 - 时间。由于大量的IO操作(数千行写入磁盘),我的程序运行速度非常慢。

我需要找到一个中间立场。也许,在我的字典中累积5000(k,v)数据并将其写入磁盘,刷新我的字典,等待下一个5000(k,v)对,...继续此过程。你还有其他想法吗?

简而言之,批量写入文件是否很好?

谢谢, PD /

1 个答案:

答案 0 :(得分:1)

您最好的选择是使用DictReader / DictWriter。

for row in dictrows:
    out_f.write("%s%s" %(delimiter.join([row[name] for name in fieldnames]),
                lineterminator))

其中dictrows是由dictReader从csv生成的字典生成器,fieldnames是一个字段列表。