|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
Во время выполнения кода (который "крутится" 24/7) при появлении ошибки я решил сохранять текущие объекты в файлы, чтобы потом разобраться с причинами появления ошибки. И тут появились сложности: 1. С одной стороны лог должен быть в текстовом формате, чтобы я мог глазками, раскрывая с помощью "плюсиков", просмотреть значения полей объекта. Поэтому pickle как бы не очень подходит. 2. С другой стороны текстовый формат json накладывает на код сохраняемых объектов ряд ограничений (Бизли "Python подробный справочник", стр 699): а) tuple при сериализации / десериализации превращается в list. б) что происходит с set- вообще не понятно. в) ключи у dict должны иметь ТОЛЬКО тип строка / число (стр. 700, аргумент skipkeys). Поискал в инете и не нашел каких- то законченных библиотек, которые полностью снимают ограничения json (возможно с помощью сохранения в json метаданных о "проблемных" полях) и предлагают универсальный способ сериализации / десериализации в текстовом виде . Сами наверно понимаете: не хочется вечно помнить о каких- то ограничениях только из- за потенциальной возможности сохранения дампа работы. Можете посоветовать подобные решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 13:04 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
AlekseySQL_2и предлагают универсальный способ сериализации / десериализации в текстовом виде. Вы их не нашли, потому что их нет. Их нет, потому что питон - динамический язык, у любого объекта в ходе выполнения программы могут появлять и исчезать атрибуты-функции и атрибуты-классы, которые в текстовом виде представить нельзя потому, что питон компилируется в байт-код, и если функция/класс/... загружена из байт-кода, то её исходника вы не получите. Я вполне ответил на ваш вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 13:24 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
Кстати, не нашел ограничений по xml и в тоже время не нашел утверждений, что он все "пережевывает" (что было бы разумно указать, если несколько страниц выше при рассмотрении json на этом акцентировалось внимание). Есть у xml ограничения? Если да, то какие? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:23 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
Итак, Алексей, мы остановились на том, что вы хотите получать сериализацию / десериализацию питоних объектов в текстовом виде (это я вас цитирую). Прошу дать свои соображения на счет того, как вы представляете себе сериализовацию в текст динамически созданной функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:38 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
AlekseySQL_2Почему вы закрываете мои темы, а меня баните?Потому что Вы хамить изволите. Возможно, Вы этого не осознаете. AlekseySQL_2я решил сохранять текущие объекты в файлыОбъект - суть область памяти. Содержит обычно данные (свойства) и методы (программный код). Если с данными более-менее понятно, то как Вы собираетесь выдрать из памяти программный код (гипотетически, это вполне возможно) и как потом его использовать - это не вполне понятно. Возможно, Вы имели в виду свойства объектов? AlekseySQL_2Есть у xml ограничения? Если да, то какие?Да те же бинарные данные в чистом виде хранить не умеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:56 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
vkleAlekseySQL_2Почему вы закрываете мои темы, а меня баните?Потому что Вы хамить изволите. Возможно, Вы этого не осознаете. Я это отлично осознаю. Но это единственная возможность, которая у меня остается в силу того, что вы не выполняете свои прямые обязанности. Например, в этой теме вы легко можете вычистить всю ту грязь, которую этот товарищ успел натащить. Неужели сделаете свою работу? Не верю! vkleAlekseySQL_2я решил сохранять текущие объекты в файлыОбъект - суть область памяти. Содержит обычно данные (свойства) и методы (программный код). Если с данными более-менее понятно, то как Вы собираетесь выдрать из памяти программный код (гипотетически, это вполне возможно) и как потом его использовать - это не вполне понятно. Возможно, Вы имели в виду свойства объектов? Мне нужны только данные, которые потом легко распакуются в объекты, из которых были получены. AlekseySQL_2Есть у xml ограничения? Если да, то какие?Да те же бинарные данные в чистом виде хранить не умеет.[/quot] Спасибо, но это очевидно. Я в инете сейчас вижу, что люди сами создают библиотечки хранение словарей в xml, так что скорее всего ограничения более существенные. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:05 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
vkleВозможно, Вы имели в виду свойства объектов? Прикол в том, что в питоне свойствами объектов могут быть функции и даже классы, при чем динамически созданные. Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
О чем я многоуважаемому уже не в первый раз толкую ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:11 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
AlekseySQL_2Мне нужны только данные, которые потом легко распакуются в объекты, из которых были получены. Нет ничего проще чем получить состояние объекта в питоне Код: python 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:16 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
AlekseySQL_2пожалуйста, уходи. Все что ты пишешь- бред, который противоречит кучи встроенных библиотек python (та же библиотека json) Объясните бога ради, что общего имеет json с сериализацией объектов питона? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:19 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
Лысый дядькаAlekseySQL_2пожалуйста, уходи. Все что ты пишешь- бред, который противоречит кучи встроенных библиотек python (та же библиотека json) Объясните бога ради, что общего имеет json с сериализацией объектов питона? Ну вот, человек троллит, задавая абстрактные вопросы (слабо относящиеся к топику), чтобы потом цепляться к мелочам в ответах и троллить дальше и дальше. Что сделает модератор? Неужели выполнит свою работу и удалит троллинг? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:23 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
AlekseySQL_2Неужели сделаете свою работу? Не верю!Скажу Вам так. Здесь я на общественных началах (бесплатно и добровольно). Грязь, конечно, вычистить могу. Однако, не собираюсь выделять на это ни всё свое свободное время, ни, тем более, рабочее. Чисто там, где не мусорят. Ранее Вас я уже призывал воздержаться от грязи, однако, Вы по какой-то причине продолжаете ее разводить. AlekseySQL_2Мне нужны только данныеПонятно. Речь идет, видимо только о некоторых свойствах объекта, где хранятся необходимые Вам данные. Однако, это выяснилось только после уточняющего вопроса. Изначально речь шла об объекте, который в целом и не нужен оказался. AlekseySQL_2Спасибо, но это очевидно. Я в инете сейчас вижу, что люди сами создают библиотечки хранение словарей в xml, так что скорее всего ограничения более существенные. Тогда о чем Вы хотели услышать, в каком контексте? Разбор структур XML при значительных размерах файлов не слишком легок обычно по ресурсам, требует много памяти, потому есть всякие ухищрения, вроде разбора по кусочкам. В ряде случаев проще написать свой парсер, который из всего, что напихали в файл, выдернет только небольшие требуемые данные. Разумеется, функционал такого парсера минимален, но и работает он в разы быстрее, да и жрет памяти меньше. С записью большого файла тоже не всё просто. Есть у меня сервис (сторонняя программулина на яве), который пишет лог в XML. Вроде, ничего сложного. Новый лог - открывается новый файл, в него пишется открывающий тэг, файл закрывается. Происходит событие - открывается файл, пишется фрагмент XML, файл закрывается. И так, пока файл не потолстеет до заданной величины. В финале записывается закрывающий тэг. Просто? Да. Надежно? В общем, да. Удобно? Ну вот тут как сказать... Сервис упал, закрывающего тэга нет, стандартные библиотеки вываливают ошибку разбора структуры. Проблема? Да. Решаемая? Да, но в читалке логов пришлось городить огород. Написав столько текста, я не уверен, что изложил что-то полезное, возможно, для Вас "это очевидно", как и написанное ранее. Задавайте вопросы конкретнее, формулируйте мысли точнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:46 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
AlekseySQL_2, Лёша, давайте еще раз. С самого начала текущей беседы. Вы хотите, цитирую "универсальный способ сериализации / десериализации в текстовом виде". Подчеркивание ваше, вы прям выделяете, что нужна именно сериализация / десериализация. Может быть вы не совсем осознаете, что это такое, ну так я вам расскажу. Сериализация / десериализация - это способ выгрузить объект из программы на внешний носитель, а потос в произвольный момент в другую программу загрузить. Так вот у меня есть все основания полагать, что в текстовом виде это сделать невозможно. Если у вас есть другие соображения - выкладывайте. Кроме того, ниже вы пишите цитирую "Мне нужны только данные". Дорогой дружище, вы только что просили сериализацию, теперь вам нужны только данные. Это же кардинально разные вещи. Если вы поменяли ТЗ, то так и скажите, зачем же вы маму зовете и ругаетесь? А как получить данные, я вам тоже показал. Не нравится? Аргументируйте, а не ведите себя как обкакавшаяся первоклассница. В самом то деле, не я же вам в штаны накакал, что вы на меня наезжаете - АРГУМЕНТИРУЙТЕ. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:52 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
AlekseySQL_2Лысый дядькапропущено... Объясните бога ради, что общего имеет json с сериализацией объектов питона? Ну вот, человек троллит, задавая абстрактные вопросы (слабо относящиеся к топику), чтобы потом цепляться к мелочам в ответах и троллить дальше и дальше. Что сделает модератор? Неужели выполнит свою работу и удалит троллинг?Уважаемый Алексей, давайте вместе с Вами прочтем Ваше первое сообщение с выражением. AlekseySQL_22. С другой стороны текстовый формат json накладывает на код сохраняемых объектов ряд ограничений (Бизли "Python подробный справочник", стр 699)AlekseySQL_2Поискал в инете и не нашел каких- то законченных библиотек, которые полностью снимают ограничения json (возможно с помощью сохранения в json метаданных о "проблемных" полях) и предлагают универсальный способ сериализации / десериализации в текстовом виде . Честно говоря, я тоже не понял, какое отношение имеет json с его проблемами к рассматриваемому вопросу "Сериализация объектов в текстовом формате". Преобразовать произвольные ключи/данные к требованиям формата - вполне выполнимая задача. Конечно, я допускаю, что есть какая-то проблема, но какая - не ясно. В общем, мне было бы тоже интересно узнать, каким образом json с его ограничениями мешает решению задачи. Формат довольно распространенный, используется повсеместно. Или Вы считаете, что я тоже потроллить Вас решил? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:13 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
Модератор: Сообщения не по теме и содержащие откровенные нападки удалены. Алексея и Лысого дядьку прошу воздержаться от взаимных оскорблений и взаимного троллинга и сосредоточить усилия на обсуждении темы. В бан я отправляю редко, однако, предупреждаю обоих, если после данного сообщения увижу срач - бан получите оба. Форум - не место для разборок и обид. И это сообщение не китайское предупреждение. Надеюсь, выразился ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:44 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
vkleМодератор: Сообщения не по теме и содержащие откровенные нападки удалены. Алексея и Лысого дядьку прошу воздержаться от взаимных оскорблений и взаимного троллинга и сосредоточить усилия на обсуждении темы. В бан я отправляю редко, однако, предупреждаю обоих, если после данного сообщения увижу срач - бан получите оба. Форум - не место для разборок и обид. И это сообщение не китайское предупреждение. Надеюсь, выразился ясно. А- ха- ха! Весь идиотский троллинг оставлен (типа встроенные библиртеки json и xml работать в принципе не могут, потому что python- динамический язык). Ну и вопросы типа: обьясни- ка мне чем вот это отличается от того :) Какой хороший модератор! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:52 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
Модератор, закрывай тему: честного нормального отношения я тут не получу. И вылизывай очко своему любимому троллю- дэбилу. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 17:05 |
|
Python: Сериализация объектов в текстовом формате
|
|||
---|---|---|---|
#18+
AlekseySQL_2Какой хороший модератор!Действительно, забыл напомнить. Действия модератора Вы можете обжаловать в администрации форума. И, да, вынужден Вас забанить за очередное оскорбление. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 17:09 |
|
|
start [/forum/topic.php?fid=23&msg=39772378&tid=1459999]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 399ms |
0 / 0 |