Уведомления

Группа в Telegram: @pythonsu

#1 Март 1, 2017 21:43:34

Djo0513
Зарегистрирован: 2016-09-02
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

Не хотел я спрашивать этот вопрос здесь, но пришлось так как нигде не нашёл ответ. Зачем сериализировать данные в файл? Это типо шифрования? Но зачем шифровать то, что каждый может дешифровать. В википедии написано для передачи данных в интернете ( если не ошибаюсь), а что нельзя передать файл с несериализованными данными? Дайте пожалуйста полный ответ.



Лучший учитель - это ты сам.

Офлайн

#2 Март 1, 2017 22:15:05

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

Сериализация - Нет это не шифрование. Да это для передачи данных. Не файлов, а данных, объектов. Но видимо раз у Вас нету понимания, то и задач таких нет.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 1, 2017 23:34:02

wi34rd
Зарегистрирован: 2016-10-08
Сообщения: 89
Репутация: +  2  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

Сериализация и десериализация быстрее и проще (не надо самому изгаляться), чем записывать в файл несериализованные данные.

Офлайн

#4 Март 2, 2017 03:30:15

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

Есть, однако, определение, проясняющее суть:
Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.

Пример.
У вас есть экземляр класса Table, и вы хотите этот экземпляр сохранить в файл, чтобы потом продолжить с ним работу. Как вы сохраните этот экземпляр в файл, чтобы потом загрузить его обратно и превратить снова в экземлпяр класса Table? Вот для этого и нужен процесс сериализации и ему обратный.

Вот небольшой пример, который это иллюстрирует.

 # serialization and deserialization example 
class Table:
    def __init__(self, w, h):
        self.width = w
        self.height = h
def serialize_table_and_save(obj, filename='data.dat'):
    with open(filename, 'w') as f:
        f.write('{},{}'.format(obj.width, obj.height))
def load_and_deserialize_table(filename='data.dat'):
    obj = None
    with open(filename, 'r') as f:
        try:
            w, h = f.read().split(',')
            obj = Table(float(w), float(h))
        except: # I know, that isn't good... 
            print('Something goes wrong...')
    return obj
if __name__ == '__main__':
    print('Lets create an instance of the class Table')
    new_table = Table(2, 4)
    print('The instance was created successfully...')
    print('Lets try to save it to a file')
    serialize_table_and_save(new_table)
    print('Created instance of the class Table was saved to a file')
    print('Lets delete saved instance')
    del new_table
    print('There is no instances of the class Table in the global namespace')
    print('Lets restore one from the file')
    just_created_table = load_and_deserialize_table()
    if isinstance(just_created_table, Table):
        print('Test successfully passed: an instance of the class Table was saved to a file and succuessfully loaded from it.')
    else:
        print('Something was wrong during (de)serialization or I/O operations')
    print('Good bye!')





Офлайн

#5 Март 2, 2017 04:48:33

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

Djo0513
Зачем сериализировать данные в файл? Это типо шифрования?
Не, это перевод данных в такой вид, который однозначно можно будет восстановить на другом компе или в другой версии питона в то же самое. Когда оно сериализовано, его можно как хранить локально на протяжении любого времени, так и передавать куда-нибудь.

В пределах питона используется pickle, а вообще часто используется xml для этого.



Отредактировано py.user.next (Март 2, 2017 04:50:03)

Офлайн

#6 Март 2, 2017 14:58:49

Djo0513
Зарегистрирован: 2016-09-02
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

py.user.next
И только? Как часто используется сериализация-десериализиация в программировании?



Лучший учитель - это ты сам.

Офлайн

#7 Март 2, 2017 15:41:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

Djo0513
И только? Как часто используется сериализация-десериализиация в программировании?
Очень часто. Любые сетевые программы, включая веб используют сериализацию. Вы получаете данные из БД и строите на основании этих данных набор объектов. Далее, вам надо этот набор объектов передать на клиента. Во-первых, как это сделать по сети? Надо превратить объект в набор байтов на одной стороне и затем выполнить обратное преобразование на другой. Во вторых, на клиента вообще нет питона, там браузер и джаваскрипт. Вы должны выбрать формат данных, поддерживаемый как серверной, так и клиентской стороной. Это и есть сериализация - превращение объекта в некий набор бинарных или текстовых данных и воввстановление объекта из этих данных. Да и не сетевым программам не обойтись без сериализации. Предложите какой-нибудь способ организовать сохранение в игре?



Офлайн

#8 Март 3, 2017 02:49:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

Djo0513
Как часто используется сериализация-десериализиация в программировании?
Когда программа имеет какое-то состояние и его надо быстро сохранить и потом восстановить в точности. Тот же самый режим сна у операционной системы или снимок состояния виртуальной машины. Всё это на диск сохраняется и потом с него восстанавливается обратно.



Офлайн

#9 Март 3, 2017 04:15:45

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

py.user.next
Тот же самый режим сна у операционной системы
Не путай человека, тут нет сериализации, просто измененные несохраненные страницы сбрасываются на диск.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#10 Март 3, 2017 06:32:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Зачем сериализировать данные в файл?

PooH
тут нет сериализации, просто измененные несохраненные страницы сбрасываются на диск
Не, просто это так хочется, чтобы было. Не думаю, что там ограничено одной оперативной памятью всё. Иначе можно было бы бэкапить систему путём сохранения образа оперативной памяти. Да и сериализация описывается функцией и обратной к ней. А функция может быть идемпотентной.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version