非常教程

Python参考手册

文件格式 | File Formats

xdrlib

源代码: Lib / xdrlib.py

xdrlib模块支持外部数据表示标准,如Sun Microsystems,Inc.于1987年6月编写的RFC 1014中所述。它支持RFC中描述的大部分数据类型。

xdrlib模块定义了两个类,一个用于将变量打包到XDR表示中,另一个用于从XDR表示中解压缩。还有两个异常类。

class xdrlib.Packer

Packer是将数据打包到XDR表示中的类。将Packer类实例化不带任何参数。

class xdrlib.Unpacker(data)

Unpacker是从字符串缓冲区中解压XDR数据值的补充类。输入缓冲区是作为数据给出的。

另请参阅

RFC 1014 - XDR:外部数据表示标准此RFC定义了在最初编写此模块时XDR的数据编码。RFC 1832显然已经过时了。 RFC 1832 - XDR:外部数据表示标准较新的RFC,提供XDR的修订定义。

1.打包器对象

Packer 实例具有以下方法:

Packer.get_buffer()

以字符串形式返回当前包缓冲区。

Packer.reset()

将包缓冲区重置为空字符串。

通常,您可以通过调用适当的pack_type()方法来打包任何最常见的XDR数据类型。每种方法都只有一个参数,即要打包的值。下面简单数据类型的包装方法的支持:pack_uint()pack_int()pack_enum()pack_bool()pack_uhyper(),和pack_hyper()

Packer.pack_float(value)

打包单精度浮点数

Packer.pack_double(value)

打包双精度浮点数

以下方法支持打包字符串,字节和不透明数据:

Packer.pack_fstring(n, s)

包装固定长度的字符串sn是字符串的长度,但包含在数据缓冲区中。如果需要,字符串会填充空字节以保证4字节对齐。

Packer.pack_fopaque(n, data)

包装一个固定长度的不透明数据流,类似于pack_fstring()

Packer.pack_string(s)

包装一个可变长度的字符串s。首先将字符串的长度打包为无符号整数,然后将字符串数据打包pack_fstring()

Packer.pack_opaque(data)

包装一个可变长度的不透明数据字符串,类似于pack_string()

Packer.pack_bytes(bytes)

打包一个可变长度的字节流,类似于pack_string()

以下方法支持打包数组和列表:

Packer.pack_list(list, pack_item)

打包同类项目的列表。此方法对于具有不确定大小的列表非常有用; 即在整个列表走完之前,大小不可用。对于列表中的每个项目,1首先打包一个无符号整数,然后打包列表中的数据值。pack_item是被调用来打包单个项目的函数。在列表的最后,0打包一个无符号整数。

例如,要打包整数列表,代码可能如下所示:

import xdrlib
p = xdrlib.Packer()
p.pack_list([1, 2, 3], p.pack_int)

Packer.pack_farray(n, array, pack_item)

打包同质项目的固定长度列表(数组)。n是列表的长度; 它没有打包到缓冲区中,但是ValueError如果len(array)不等于n,则会引发异常。如上所述,pack_item是用于打包每个元素的函数。

Packer.pack_array(list, pack_item)

打包同义项目的可变长度列表。首先,列表的长度被打包为一个无符号整数,然后每个元素按pack_farray()上面的方式打包。

2.解包器对象

Unpacker课程提供以下方法:

Unpacker.reset(data)

用给定的数据重新设置字符串缓冲区。

Unpacker.get_position()

返回数据缓冲区中的当前解包位置。

Unpacker.set_position(position)

将数据缓冲区解包位置设置为位置。你应该小心使用get_position()set_position()

Unpacker.get_buffer()

以字符串形式返回当前的解包数据缓冲区。

Unpacker.done()

表示解包完成。Error如果所有数据都未解压,则引发异常。

另外,可以用a打包的每种数据类型都可以用a Packer打开Unpacker。解包方法的形式是unpack_type(),并且不需要任何参数。他们返回解压缩的对象。

Unpacker.unpack_float()

解包一个单精度浮点数。

Unpacker.unpack_double()

解压缩一个双精度浮点数,类似于unpack_float()

另外,以下方法解压字符串,字节和不透明数据:

Unpacker.unpack_fstring(n)

解压并返回一个固定长度的字符串。n是预期的字符数。假定填充空字节以保证4字节对齐。

Unpacker.unpack_fopaque(n)

解包并返回一个固定长度的不透明数据流,类似于unpack_fstring()

Unpacker.unpack_string()

解压并返回一个可变长度的字符串。首先将字符串的长度解压缩为无符号整数,然后将字符串数据解压缩unpack_fstring()

Unpacker.unpack_opaque()

解压缩并返回一个可变长度的不透明数据字符串,类似于unpack_string()

Unpacker.unpack_bytes()

解压并返回一个可变长度的字节流,类似于unpack_string()

以下方法支持解包数组和列表:

Unpacker.unpack_list(unpack_item)

解包并返回同质项目列表。首先解压缩一个无符号整数标志,然后每次解压缩一个元素。如果该标志是1,则该项目被解压并附加到列表中。一个标志0表示列表的结尾。unpack_item是被调用来解包项目的函数。

Unpacker.unpack_farray(n, unpack_item)

解包并返回(作为列表)一个固定长度的同类物品数组。n是缓冲区中期望的列表元素的数量。如上所述,unpack_item是用于解包每个元素的函数。

Unpacker.unpack_array(unpack_item)

解压缩并返回一个可变长度的同类项目列表。首先,将列表的长度解压缩为一个无符号整数,然后像unpack_farray()上面那样解压缩每个元素。

3.例外

这个模块中的异常被编码为类实例:

exception xdrlib.Error

基本的异常类。Error具有msg包含错误描述的单个公共属性。

exception xdrlib.ConversionError

类派生自Error。不包含额外的实例变量。

以下是您将如何捕获以下例外之一的示例:

import xdrlib
p = xdrlib.Packer()
try:
    p.pack_double(8.01)
except xdrlib.ConversionError as instance:
    print 'packing the double failed:', instance.msg

文件格式 | File Formats相关

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()方法