tibs
Янв. 28, 2012 03:04:08
Задача такая. Дан исходный файл на 200 000 строк и 50 столбцов. Надо в каких-то ячейках произвести изменение результата. Пытался сделать это, но при сохранение python зависает и в конце концов выдает memory error. Как правильно обрабатывать большие xls-файлы (сама база занимает 206 Мб)?
Код примерно такой:
from xlrd import open_workbook
from xlutils.copy import copy
rb=open_workbook('all.xls',on_demand=True)
wb = copy(rb)
# обработка
wb.get_sheet(0).write(10,10,'changed!')
wb.save('2.xls') #здесь висим
И еще один маленький вопрос: Как задать формат для записываемых ячеек Текстовый?
o7412369815963
Янв. 28, 2012 10:27:37
Я считаю что xls для этого не предназначен, такие объемы нужно хранить в бд, хотя бы sqlite, при этом такой вопрос не возникнет.
в текущей ситуации можно попробовать работать через ole/com (если ось - винда),
если это разовый случай, то можно сохранить в csv, а в excel преобразовать обратно, если нужно.
tibs
Янв. 28, 2012 11:34:21
o7412369815963, ole/com - подскажите, пожалуйста, где почитать. Я с этим не сталкивался.
Преобразование csv/xls делать вручную? Я спарсил эту БД и в тот момент она сохранилась. А вот сейчас при попытке ее обработки все просто висит.
o7412369815963
Янв. 28, 2012 15:16:38
tibs
o7412369815963, ole/com - подскажите, пожалуйста, где почитать. Я с этим не сталкивался.
Преобразование csv/xls делать вручную? Я спарсил эту БД и в тот момент она сохранилась. А вот сейчас при попытке ее обработки все просто висит.
1) см. pywin32
2) нужно определиться с целью, что должно быть в итоге? какие “глобальную” задачу нужно решить?
tibs
Янв. 28, 2012 15:32:57
2) Глобальная задача такова: Необходимо обновлять эту БД. Т.е. если найденной организации нет в БД, надо в нее дописать, а у тех которые были - просто обновить время (поле такое).
o7412369815963
Янв. 28, 2012 18:38:18
как потом эта БД используется? выгрузка куда-то идет или её кто-то смотрит?
tibs
Янв. 28, 2012 22:12:16
o7412369815963
как потом эта БД используется? выгрузка куда-то идет или её кто-то смотрит?
Она скорее для личного пользования. Вряд ли будет выгрузка, есть ведь сайт с этой всей базой.
o7412369815963
Янв. 29, 2012 01:19:16
Может тогда сразу работать с базой сайта, добавить туда колонку “дата изменения” при изменении строки, поле обновлять?
tibs
Янв. 29, 2012 11:28:37
o7412369815963
Может тогда сразу работать с базой сайта, добавить туда колонку “дата изменения” при изменении строки, поле обновлять?
Сайт ведь чужой, с него просто содрана база.
s0rg
Янв. 29, 2012 11:44:41
что бы имеете в виду под ‘содрана’?
я с трудом представляю себе сайт у которого в качестве бд используеться xls.