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