How can I use pickle to save a dict?

前端 未结 9 2222
说谎
说谎 2020-11-22 06:45

I have looked through the information that the Python docs give, but I\'m still a little confused. Could somebody post sample code that would write a new file then use pickl

相关标签:
9条回答
  • 2020-11-22 07:44
    >>> import pickle
    >>> with open("/tmp/picklefile", "wb") as f:
    ...     pickle.dump({}, f)
    ... 
    

    normally it's preferable to use the cPickle implementation

    >>> import cPickle as pickle
    >>> help(pickle.dump)
    Help on built-in function dump in module cPickle:
    
    dump(...)
        dump(obj, file, protocol=0) -- Write an object in pickle format to the given file.
    
        See the Pickler docstring for the meaning of optional argument proto.
    
    0 讨论(0)
  • 2020-11-22 07:46
    import pickle
    
    your_data = {'foo': 'bar'}
    
    # Store data (serialize)
    with open('filename.pickle', 'wb') as handle:
        pickle.dump(your_data, handle, protocol=pickle.HIGHEST_PROTOCOL)
    
    # Load data (deserialize)
    with open('filename.pickle', 'rb') as handle:
        unserialized_data = pickle.load(handle)
    
    print(your_data == unserialized_data)
    

    The advantage of HIGHEST_PROTOCOL is that files get smaller. This makes unpickling sometimes much faster.

    Important notice: The maximum file size of pickle is about 2GB.

    Alternative way

    import mpu
    your_data = {'foo': 'bar'}
    mpu.io.write('filename.pickle', data)
    unserialized_data = mpu.io.read('filename.pickle')
    

    Alternative Formats

    • CSV: Super simple format (read & write)
    • JSON: Nice for writing human-readable data; VERY commonly used (read & write)
    • YAML: YAML is a superset of JSON, but easier to read (read & write, comparison of JSON and YAML)
    • pickle: A Python serialization format (read & write)
    • MessagePack (Python package): More compact representation (read & write)
    • HDF5 (Python package): Nice for matrices (read & write)
    • XML: exists too *sigh* (read & write)

    For your application, the following might be important:

    • Support by other programming languages
    • Reading / writing performance
    • Compactness (file size)

    See also: Comparison of data serialization formats

    In case you are rather looking for a way to make configuration files, you might want to read my short article Configuration files in Python

    0 讨论(0)
  • 2020-11-22 07:48

    Try this:

    import pickle
    
    a = {'hello': 'world'}
    
    with open('filename.pickle', 'wb') as handle:
        pickle.dump(a, handle, protocol=pickle.HIGHEST_PROTOCOL)
    
    with open('filename.pickle', 'rb') as handle:
        b = pickle.load(handle)
    
    print a == b
    
    0 讨论(0)
提交回复
热议问题