Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2007 12:18:52

Sunny
От:
Зарегистрирован: 2007-06-15
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

Приветик всем!
Столкнулась с необходимостью сохранять проект (необходимо сохранить объекты классов достаточно большого объема). Поделитесь пожалуйста опытом как вы реализуете сохранение проектов. Пробовала pickle, но боюсь что могут быть проблемы при считывании из файла большого обьема информации, а потеря данных очень нежелательна :), ну и при записи тоже ведь может быть сбой. В общем, очень жду советов :)



Офлайн

#2 Ноя. 2, 2007 13:00:10

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

Сохраняй по частям. Например один класс в один файл. =)
Для надежности - что все прочиталось/сохранилось нормально можно контрольную сумму считать.



Офлайн

#3 Ноя. 2, 2007 14:18:01

Sunny
От:
Зарегистрирован: 2007-06-15
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

Но как тогда быть с тем что проект должен запускаться при выборе одного файла, да и вдруг “умный ” пользователь решит поудалять файлики….



Офлайн

#4 Ноя. 2, 2007 14:30:21

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

Запакуй в tar с други расширением (модуль tarfile) =)



Офлайн

#5 Ноя. 2, 2007 15:25:10

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Save

picle.
Будет сбой на чтении - ошибка - не открылся файл.
Ошибку записи легко обойти создавая backup.
Кажется, всё. Для экономии места можно еще и паковать, но это уже к надежности никакого отношения не имеет



Офлайн

#6 Ноя. 2, 2007 15:49:18

Sunny
От:
Зарегистрирован: 2007-06-15
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

Тогда ещё один вопросик. Когда я сохраняю данные через
x = pickle.dumps(obj, 2)
file.write(x)
то почему-то при считывании файла file.read() он у меня вылетает на каком-то символе и не считывает файл полностью. Никто не знает что это может быть?
И ещё, а можно как-то паковать строку а не файл?



Офлайн

#7 Ноя. 2, 2007 16:19:45

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

Sunny
Тогда ещё один вопросик. Когда я сохраняю данные через
x = pickle.dumps(obj, 2)
file.write(x)
то почему-то при считывании файла file.read() он у меня вылетает на каком-то символе и не считывает файл полностью. Никто не знает что это может быть?
И ещё, а можно как-то паковать строку а не файл?
попробуй писать и читать в бинарном виде: file.write(x, ‘b’)



Офлайн

#8 Ноя. 2, 2007 16:55:10

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

Из своего опыта: есть дерево объектов-классов (не дерево классов, а именно объектов-классов), в каждом из них есть функция xml() и from_xml(), как вы догадались - сохраняется всё в формате xml, и таким образом, что после парсинга xml у меня выстраивается дерево объектов-классов (родство берётся из структуры xml файла). Как это конкретно реализовано - не могу сказать/показать, но происходит всё очень быстро - и сборка и разборка, причём никаких ошибок, бэкап можно делать хоть каждую минуту, но возможно у меня с вами разные размерности объёмов данных:) Это может и не самый правильный способ, но мне он нравится своей гибкостью и масштабируемостью, структуру дерева объектов-классов можно изменять свободно, задавать правила родства и т.п. Некоторые ноды дерева можно сделать подгружаемыми, это экономит оперативную память. В общем я доволен и не испытываю никаких неудобств, ошибок или непоняток.

З.Ы. Это выглядит как иерархическая СУБД - только она полностью своя и очень лёгкая.



Офлайн

#9 Ноя. 2, 2007 17:00:59

umup
От:
Зарегистрирован: 2007-07-14
Сообщения: 53
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

Как это конкретно реализовано - не могу сказать/показать
а что тут сложного - минут на 20 работы…



Офлайн

#10 Ноя. 2, 2007 17:24:32

Sunny
От:
Зарегистрирован: 2007-06-15
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Save

poltergeist
Из своего опыта: есть дерево объектов-классов (не дерево классов, а именно объектов-классов), в каждом из них есть функция xml() и from_xml(), как вы догадались - сохраняется всё в формате xml, и таким образом, что после парсинга xml у меня выстраивается дерево объектов-классов (родство берётся из структуры xml файла). Как это конкретно реализовано - не могу сказать/показать, но происходит всё очень быстро - и сборка и разборка, причём никаких ошибок, бэкап можно делать хоть каждую минуту, но возможно у меня с вами разные размерности объёмов данных:) Это может и не самый правильный способ, но мне он нравится своей гибкостью и масштабируемостью, структуру дерева объектов-классов можно изменять свободно, задавать правила родства и т.п. Некоторые ноды дерева можно сделать подгружаемыми, это экономит оперативную память. В общем я доволен и не испытываю никаких неудобств, ошибок или непоняток.

З.Ы. Это выглядит как иерархическая СУБД - только она полностью своя и очень лёгкая.
Если честно, то очень хотелось бы увидеть реализацию этого способа. Если есть возможность, то выложи хоть небольшой пример или перешли мне. :) Спасибки заранее



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version