Найти - Пользователи
Полная версия: Save
Начало » Python для экспертов » Save
1 2
Sunny
Приветик всем!
Столкнулась с необходимостью сохранять проект (необходимо сохранить объекты классов достаточно большого объема). Поделитесь пожалуйста опытом как вы реализуете сохранение проектов. Пробовала pickle, но боюсь что могут быть проблемы при считывании из файла большого обьема информации, а потеря данных очень нежелательна :), ну и при записи тоже ведь может быть сбой. В общем, очень жду советов :)
shiza
Сохраняй по частям. Например один класс в один файл. =)
Для надежности - что все прочиталось/сохранилось нормально можно контрольную сумму считать.
Sunny
Но как тогда быть с тем что проект должен запускаться при выборе одного файла, да и вдруг “умный ” пользователь решит поудалять файлики….
shiza
Запакуй в tar с други расширением (модуль tarfile) =)
Андрей Светлов
picle.
Будет сбой на чтении - ошибка - не открылся файл.
Ошибку записи легко обойти создавая backup.
Кажется, всё. Для экономии места можно еще и паковать, но это уже к надежности никакого отношения не имеет
Sunny
Тогда ещё один вопросик. Когда я сохраняю данные через
x = pickle.dumps(obj, 2)
file.write(x)
то почему-то при считывании файла file.read() он у меня вылетает на каком-то символе и не считывает файл полностью. Никто не знает что это может быть?
И ещё, а можно как-то паковать строку а не файл?
shiza
Sunny
Тогда ещё один вопросик. Когда я сохраняю данные через
x = pickle.dumps(obj, 2)
file.write(x)
то почему-то при считывании файла file.read() он у меня вылетает на каком-то символе и не считывает файл полностью. Никто не знает что это может быть?
И ещё, а можно как-то паковать строку а не файл?
попробуй писать и читать в бинарном виде: file.write(x, ‘b’)
poltergeist
Из своего опыта: есть дерево объектов-классов (не дерево классов, а именно объектов-классов), в каждом из них есть функция xml() и from_xml(), как вы догадались - сохраняется всё в формате xml, и таким образом, что после парсинга xml у меня выстраивается дерево объектов-классов (родство берётся из структуры xml файла). Как это конкретно реализовано - не могу сказать/показать, но происходит всё очень быстро - и сборка и разборка, причём никаких ошибок, бэкап можно делать хоть каждую минуту, но возможно у меня с вами разные размерности объёмов данных:) Это может и не самый правильный способ, но мне он нравится своей гибкостью и масштабируемостью, структуру дерева объектов-классов можно изменять свободно, задавать правила родства и т.п. Некоторые ноды дерева можно сделать подгружаемыми, это экономит оперативную память. В общем я доволен и не испытываю никаких неудобств, ошибок или непоняток.

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

З.Ы. Это выглядит как иерархическая СУБД - только она полностью своя и очень лёгкая.
Если честно, то очень хотелось бы увидеть реализацию этого способа. Если есть возможность, то выложи хоть небольшой пример или перешли мне. :) Спасибки заранее
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB