本文实例讲述了python使用marshal模块序列化的方法,分享给大家供大家参考。具体方法如下:
先来看看下面这段代码:
import marshal data1 = ['abc',12,23,'jb51'] #几个测试数据 data2 = {1:'aaa',"b":'dad'} data3 = (1,2,4) output_file = open("a.txt",'wb')#把这些数据序列化到文件中,注:文件必须以二进制模式打开 marshal.dump(data1,output_file) marshal.dump(data2,output_file) marshal.dump(data3,output_file) output_file.close() input_file = open('a.txt','rb')#从文件中读取序列化的数据 #data1 = [] data1 = marshal.load(input_file) data2 = marshal.load(input_file) data3 = marshal.load(input_file) print data1#给同志们打印出结果看看 print data2 print data3 outstring = marshal.dumps(data1)#marshal.dumps()返回是一个字节串,该字节串用于写入文件 open('out.txt','wb').write(outstring) file_data = open('out.txt','rb').read() real_data = marshal.loads(file_data) print real_data
结果:
['abc', 12, 23, 'jb51'] {1: 'aaa', 'b': 'dad'} (1, 2, 4) ['abc', 12, 23, 'jb51']
marshel模块的几个函数官方描述如下:
The module defines these functions:
marshal.dump(value, file[, version])
Write the value on the open file. The value must be a supported type. The file must be an open file object such as sys.stdout or returned by open() or os.popen(). It must be opened in binary mode ('wb' or 'w+b').
If the value has (or contains an object that has) an unsupported type, a ValueError exception is raised — but garbage data will also be written to the file. The object will not be properly read back by load().
New in version 2.4: The version argument indicates the data format that dump should use (see below).
marshal.load(file)
Read one value from the open file and return it. If no valid value is read (e.g. because the data has a different Python version's incompatible marshal format), raise EOFError, ValueError or TypeError. The file must be an open file object opened in binary mode ('rb' or 'r+b').
Warning
If an object containing an unsupported type was marshalled with dump(), load() will substitute None for the unmarshallable type.
marshal.dumps(value[, version])
Return the string that would be written to a file by dump(value, file). The value must be a supported type. Raise a ValueError exception if value has (or contains an object that has) an unsupported type.
New in version 2.4: The version argument indicates the data format that dumps should use (see below).
marshal.loads(string)
Convert the string to a value. If no valid value is found, raise EOFError, ValueError or TypeError. Extra characters in the string are ignored.
In addition, the following constants are defined:
marshal.version
Indicates the format that the module uses.
marshal.version的用处:marshal不保证不同的python版本之间的兼容性,所以保留个版本信息的函数.
希望本文所述对大家Python程序设计的学习有所帮助。
本文向大家介绍python使用cPickle模块序列化实例,包括了python使用cPickle模块序列化实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python使用cPickle模块序列化的方法,分享给大家供大家参考。 具体方法如下: 本文实例测试环境Python2.7.6 运行结果如下: 希望本文所述对大家Python程序设计的学习有所帮助。
本文向大家介绍Python使用pickle模块实现序列化功能示例,包括了Python使用pickle模块实现序列化功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python使用pickle模块实现序列化功能。分享给大家供大家参考,具体如下: Python内置的pickle模块能够将Python对象序列成字节流,也可以把字节流反序列成对象。 如果比较复杂的操作(对象属性更变,添加删
问题内容: 我是来自C 背景的Python新手。虽然我知道用我以前的C 知识来尝试找到匹配的概念并不是Pythonic,但我认为这个问题仍然是一个普遍的问题: 在C 中,由于C 无法确定哪个全局/静态变量将首先在编译单元中初始化,因此存在一个众所周知的全局/静态变量初始化顺序失败的问题,因此,全局/静态变量取决于不同编译中的另一个变量单元可能比其依赖项对应的对象早初始化,并且当依赖项开始使用依赖项
问题内容: 我有一个包含地图(带有非字符串键)和其他一些字段的类。 我想使用Jackson来对该类进行序列化和反序列化。我看到了另一种方法,因此决定尝试使用杰克逊模块。 我关注了这篇文章,并扩展了JsonDeserializer和JsonSerializer。问题在于这些类应该被键入,因此看起来应该像 KeySerializer也是如此。 然后添加到模块: 但这显然是错误的,因为我遇到了一个例外:
我正在尝试在SpringBoot应用程序中编写Jackson反序列化器模块。主要原因是使用自定义Jackson反序列化程序对传入请求中的pin码进行加密。加密属性由spring组件 我试图从这个解决方案,但我的自定义反序列化程序仍然没有调用。而不是基于此,始终调用,并且不执行加密 提前谢谢 注释: 带有要加密字段的请求正文 杰克逊构型 模块: 最后反序列化器:
本文向大家介绍Python中使用Tkinter模块创建GUI程序实例,包括了Python中使用Tkinter模块创建GUI程序实例的使用技巧和注意事项,需要的朋友参考一下 使用Tkinter模块来创建简单的GUI程序。 Tkinter的Widgets有:Button、Canvas、Checkbutton、Entry、Frame、Label、Listbox、Menu、Menubutton、Messa