Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #90221

Seralization

From Cecil Westerhof <Cecil@decebal.nl>
Newsgroups comp.lang.python
Subject Seralization
Organization Decebal Computing
Date 2015-05-09 10:37 +0200
Message-ID <876182xi1w.fsf@Equus.decebal.nl> (permalink)

Show all headers | View raw


To make serialization a bit easier I made a few functions to get, save
and convert between the different types. As I see it pickle and json
are probably used the most. I also have a get and save for marshal.
But no conversion to marshal, because in principle you should not use
it, so a conversion to it is not useful. I did define conversion from.

Are there other seralizations that is handy to take care of?

I understood that because the differences between platforms it is
better to do the file operatins in binary mode. Is that true?


The code:
    def get_json(json_file):
        with open(json_file, 'rb') as in_f:
            return json.load(in_f)

    def get_marshal(marshal_file):
        with open(marshal_file, 'rb') as in_f:
            return marshal.load(in_f)

    def get_pickle(pickle_file):
        with open(pickle_file, 'rb') as in_f:
            return pickle.load(in_f)

    def save_json(data, json_file):
        with open(json_file, 'wb') as out_f:
            json.dump(data, out_f)

    def save_marshal(data, marshal_file):
        with open(marshal_file, 'wb') as out_f:
            marshal.dump(data, out_f)

    def save_pickle(data, pickle_file):
        with open(pickle_file, 'wb') as out_f:
            pickle.dump(data, out_f)

    def marshal_to_pickle(marshal_file, pickle_file):
        data_in = get_marshal(marshal_file)
        save_pickle(data_in, pickle_file)
        data_out = get_pickle(pickle_file)
        if data_in != data_out:
            raise SerializationError('Serialization from {0} to {1} not succesfull'.
                                     format(marshal_file, pickle_file))

    def marshal_to_json(marshal_file, json_file):
        data_in = get_marshal(marshal_file)
        save_json(data_in, json_file)
        data_out = get_json(json_file)
        if data_in != data_out:
            raise SerializationError('Serialization from {0} to {1} not succesfull'.
                                     format(marshal_file, json_file))

    def pickle_to_json(pickle_file, json_file):
        data_in = get_pickle(pickle_file)
        save_json(data_in, json_file)
        data_out = get_json(json_file)
        if data_in != data_out:
            raise SerializationError('Serialization from {0} to {1} not succesfull'.
                                     format(pickle_file, json_file))

    def json_to_pickle(json_file, pickle_file):
        data_in = get_json(json_file)
        save_pickle(data_in, pickle_file)
        data_out = get_pickle(pickle_file)
        if data_in == data_out:
            raise SerializationError('Serialization from {0} to {1} not succesfull'.
                                     format(json_file, pickle_file))

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof

Back to comp.lang.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Seralization Cecil Westerhof <Cecil@decebal.nl> - 2015-05-09 10:37 +0200
  Re: Seralization Chris Angelico <rosuav@gmail.com> - 2015-05-09 19:16 +1000
    Re: Seralization Cecil Westerhof <Cecil@decebal.nl> - 2015-05-09 13:38 +0200
  Re: Seralization Cecil Westerhof <Cecil@decebal.nl> - 2015-05-09 15:04 +0200

csiph-web