我目前正在逐字逐句写入字典中的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 /
答案 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是一个字段列表。