0

我目前正在逐行写入字典中的 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/

4

1 回答 1

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 是字段列表。

于 2013-10-30T20:01:55.633 回答