非常教程

Python参考手册

数据持久性 | Data Persistence

marshal

该模块包含可以以二进制格式读取和写入Python值的函数。该格式是针对Python的,但与机器体系结构问题无关(例如,您可以将Python值写入PC上的文件,将文件传输到Sun,然后再读回到那里)。该格式的细节是故意没有记录的; 它可能会在Python版本之间改变(尽管它很少)。[1]

这不是一个通用的“持久性”模块。对于通过RPC调用的Python对象的一般持久性和传输,请参阅模块pickleshelve。该marshal模块主要用于支持读取和编写.pyc文件的Python模块的“伪编译”代码。因此,如果需要,Python维护者保留修改编组格式的权利,这些编码格式采用后向不兼容的方式。如果你正在序列化和反序列化Python对象,可以使用pickle模块 - 性能可比,版本独立性得到保证,并且pickle支持比marshal更广泛的对象。

警告

marshal模块并非旨在防止错误或恶意构建的数据。切勿解组从不受信任或未经身份验证的源收到的数据。

并非所有的Python对象都支持; 一般来说,只有对象的值独立于特定的Python调用才能被该模块写入和读取。支持以下类型:布尔值,整数,长整数,浮点数,复数,字符串,Unicode对象,元组,列表,集合,frozensets,字典和代码对象,其中应该理解元组,列表,集合frozensets和词典只有在其中包含的价值本身得到支持的情况下才受到支持; 并且递归列表,集合和字典不应该被写入(它们将导致无限循环)。在单身NoneEllipsis并且StopIteration还可以编组和解组。

警告

在C long int类型超过32位的机器上(例如DEC Alpha),可以创建比32位更长的纯Python整数。如果在C long int类型只有32位的机器上将这样一个整数编组并读回,则会返回一个Python长整型对象。虽然类型不同,但数值相同。(这种行为在Python 2.2中是新的,在早期版本中,除了最不重要的32位数据都丢失了,并且打印了警告消息。)

有读取/写入文件的功能以及对字符串进行操作的功能。

该模块定义了这些功能:

marshal.dump(value, file[, version])

在打开的文件上写入值。该值必须是受支持的类型。该文件必须是打开的文件对象,例如sys.stdout或由open()或返回os.popen()。它可能不是Windows上的TemporaryFile等封装器。它必须以二进制模式('wb''w+b')打开。

如果该值具有(或包含具有)不受支持类型的对象,ValueError则会引发异常 - 但垃圾数据也会写入该文件。该对象不会被正确地读回load()

版本2.4中的新增功能:version参数指示dump应使用的数据格式(请参见下文)。

marshal.load(file)

从打开的文件中读取一个值并返回。如果没有有效的读取值(例如,因为数据有不同的Python版本的不兼容元帅格式),提高EOFErrorValueErrorTypeError。该文件必须是以二进制模式('rb''r+b')打开的打开的文件对象。

注释

如果包含不受支持的类型的对象被编组dump()load()将替代None解组类型。

marshal.dumps(value[, version])

返回将被写入文件的字符串dump(value, file)。该值必须是受支持的类型。养ValueError异常,如果值具有(或包含具有的对象)不支持的类型。

版本2.4中的新增功能:version参数指示dumps应使用的数据格式(请参见下文)。

marshal.loads(string)

将字符串转换为值。如果没有找到有效的价值,提高EOFErrorValueErrorTypeError。字符串中的额外字符将被忽略。

另外,定义了以下常量:

marshal.version

指示模块使用的格式。版本0是历史版本,版本1(在Python 2.4中添加)共享实际字符串,版本2(在Python 2.5中添加)使用二进制格式作为浮点数。当前版本是2。

2.4版本中的新功能。

1

这个模块的名称源于Modula-3(其他人)的设计师使用的一些术语,他们使用术语“编组”来以独立的形式运输数据。严格来说,“编组”意味着将一些数据从内部转换为外部形式(例如在RPC缓冲区中),而对于反向进程则为“解组”。

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法