Op Saturday 9 May 2015 11:16 CEST schreef Chris Angelico: > On Sat, May 9, 2015 at 6:37 PM, Cecil Westerhof <ce...@decebal.nl> wrote: >> 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 get_any(format, filename): > with open(filename, 'rb') as in_f: > return format.load(in_f)
I was thinking about something like that and then let the other three call this one. I think that: data = get_json(json_file) is nicer to do as: data = get_any(json, json_file) > def any_to_any(fmt1, fmt2, fn1, fn2): data_in = get_any(fmt1, fn1) > save_any(fmt2, data_in, fn2) data_out = get_any(fmt2, fn2) if > data_in != data_out: raise SerializationError('Serialization from > {0} to {1} not successful'. format(fn1, fn2)) > > formats = [json, pickle, marshal] > for fmt1 in formats: > for fmt2 in formats: > globals()["%s_to_%s" % (fmt1.__name__, fmt2.__name__)] = \ > functools.partial(any_to_any, fmt1, fmt2) > >> 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)) > > def json_to_pickle(json_file, pickle_file): try: any_to_any(json, > pickle, json_file, pickle_file) except SerializationError: pass > else: raise SerializationError('Serialization from {0} to {1} not > successful'. format(json_file, pickle_file)) Was thinking about that also. Only should there be no conversion to marshal I think. -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof -- https://mail.python.org/mailman/listinfo/python-list