Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2012 03:04:08

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

Задача такая. Дан исходный файл на 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') #здесь висим
И еще один маленький вопрос: Как задать формат для записываемых ячеек Текстовый?



Офлайн

#2 Янв. 28, 2012 10:27:37

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

Я считаю что xls для этого не предназначен, такие объемы нужно хранить в бд, хотя бы sqlite, при этом такой вопрос не возникнет.

в текущей ситуации можно попробовать работать через ole/com (если ось - винда),
если это разовый случай, то можно сохранить в csv, а в excel преобразовать обратно, если нужно.

Офлайн

#3 Янв. 28, 2012 11:34:21

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

o7412369815963, ole/com - подскажите, пожалуйста, где почитать. Я с этим не сталкивался.
Преобразование csv/xls делать вручную? Я спарсил эту БД и в тот момент она сохранилась. А вот сейчас при попытке ее обработки все просто висит.



Офлайн

#4 Янв. 28, 2012 15:16:38

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

tibs
o7412369815963, ole/com - подскажите, пожалуйста, где почитать. Я с этим не сталкивался.
Преобразование csv/xls делать вручную? Я спарсил эту БД и в тот момент она сохранилась. А вот сейчас при попытке ее обработки все просто висит.
1) см. pywin32
2) нужно определиться с целью, что должно быть в итоге? какие “глобальную” задачу нужно решить?

Офлайн

#5 Янв. 28, 2012 15:32:57

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

2) Глобальная задача такова: Необходимо обновлять эту БД. Т.е. если найденной организации нет в БД, надо в нее дописать, а у тех которые были - просто обновить время (поле такое).



Офлайн

#6 Янв. 28, 2012 18:38:18

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

как потом эта БД используется? выгрузка куда-то идет или её кто-то смотрит?

Офлайн

#7 Янв. 28, 2012 22:12:16

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

o7412369815963
как потом эта БД используется? выгрузка куда-то идет или её кто-то смотрит?
Она скорее для личного пользования. Вряд ли будет выгрузка, есть ведь сайт с этой всей базой.



Отредактировано (Янв. 29, 2012 11:28:05)

Офлайн

#8 Янв. 29, 2012 01:19:16

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

Может тогда сразу работать с базой сайта, добавить туда колонку “дата изменения” при изменении строки, поле обновлять?

Офлайн

#9 Янв. 29, 2012 11:28:37

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

o7412369815963
Может тогда сразу работать с базой сайта, добавить туда колонку “дата изменения” при изменении строки, поле обновлять?
Сайт ведь чужой, с него просто содрана база.



Офлайн

#10 Янв. 29, 2012 11:44:41

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Работа с большими файлами XLS

что бы имеете в виду под ‘содрана’?
я с трудом представляю себе сайт у которого в качестве бд используеться xls.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version