Я пытаюсь сериализовать список словарей в текстовый файл CSV, используя модуль CSV Python.Мой список содержит около 13 000 элементов, каждый из которых представляет собой словарь с ~ 100 клавишами, состоящими из простого текста и цифр.Моя функция "dictlist2file" просто вызывает DictWriter для сериализации, но я получаю ошибки из памяти.
Моя функция:
def dictlist2file(dictrows, filename, fieldnames, delimiter='\t',
lineterminator='\n', extrasaction='ignore'):
out_f = open(filename, 'w')
# Write out header
if fieldnames != None:
header = delimiter.join(fieldnames) + lineterminator
else:
header = dictrows[0].keys()
header.sort()
out_f.write(header)
print "dictlist2file: serializing %d entries to %s" \
%(len(dictrows), filename)
t1 = time.time()
# Write out dictionary
data = csv.DictWriter(out_f, fieldnames,
delimiter=delimiter,
lineterminator=lineterminator,
extrasaction=extrasaction)
data.writerows(dictrows)
out_f.close()
t2 = time.time()
print "dictlist2file: took %.2f seconds" %(t2 - t1)
Когда я пробую это в своем словаре, я получаю следующий вывод:
dictlist2file: serializing 13537 entries to myoutput_file.txt
Python(6310) malloc: *** mmap(size=45862912) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Traceback (most recent call last):
...
File "/Library/Frameworks/Python.framework/Versions/6.2/lib/python2.6/csv.py", line 149, in writerows
rows.append(self._dict_to_list(rowdict))
File "/Library/Frameworks/Python.framework/Versions/6.2/lib/python2.6/csv.py", line 141, in _dict_to_list
return [rowdict.get(key, self.restval) for key in self.fieldnames]
MemoryError
Есть идеи, что может быть причиной?В списке всего 13 000 элементов, а сами словари очень простые и маленькие (100 ключей), поэтому я не понимаю, почему это может привести к ошибкам памяти или быть настолько неэффективным.Требуется минуты, чтобы добраться до ошибки памяти.
спасибо за вашу помощь.