Python扩展模块的开源,可移植到多种操作系统,只要避免使用依赖于特定操作系统的特性,Python程序无需修改就可以在各种平台上面运行,这么方便的语言一定会超越现在主流的编程语言。
字符串可以很容易地从文件读入或向文件写出。读入数值要麻烦一些,因为read()方法总是返回字符串,要把读入的字符串传给象string.atoi()这样的函数。把象‘123’这样的字符串转换为对应的整数值123。但是,当你想保存更复杂的数据类型如列表、字典或类实例时,读写就要复杂得多。
Python的设计使程序员可以不必反复编写调试保存复杂数据类型的代码,它提供了一个叫做pickle的标准模块。这个令人惊异的模块可以把几乎任何Python对象转换为字符串表示。
这个过程叫做腌制,从对象的字符串表示恢复对象叫做恢复。在腌制和反腌制之间,对象的字符串表示可以保存在文件或数据中,甚至于通过网络连接传送到远程计算机上。如果你有一个对象x,有一个可写的文件对象f,最简单的腌制对象的办法是下面一行代码: 为了恢复对象,如果刚才的文件已打开用于读取,文件对象名仍为f。
(腌制和恢复还有其它用法,可以腌制多个对象,可以不把数据写入文件,详见库参考手册)。 pickle是保存Python扩展模块并被其它程序或同一程序以后再运行时调用的标准办法。这种做法的专用术语叫做“持久对象”。因为pickle使用广泛,许多Python扩展模块的作者都留意使新增加的数据类型如矩阵可以正确地腌制和恢复。
我们常常需要控制输出格式,而不仅仅是显示空格分开的值。有两种办法控制输出格式:一种办法是自己进行字符串处理。用字符串的片断和合并操作可以产生任何可以想象的格式。标准模块string包含了诸如把字符串填充到指定的列宽这样的有用操作,后面会有提及。
还有一个函数string.zfill(),可以在数值左边填零。此函数可以处理带有加减号的情况:
- >>> string.zfill('12', 5)
- '00012'
- >>> string.zfill('-3.14', 7)
- '-003.14'
- >>> string.zfill('3.14159265359', 5)
- '3.14159265359'
- %操作符的用法如下例:
- >>> import math
- >>> print 'The value of PI is approximately %5.3f.' % math.pi
- The value of PI is approximately 3.142.
- 如果有多个值可以用一个序表给出,这时格式字符串中要有多个格式,如:
- >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
- >>> for name, phone in table.items():
- ... print'%-10s ==> %10d' % (name, phone)
- ...
- Jack ==> 4098
- Dcab ==> 8637678
- Sjoerd ==> 4127
Python扩展模块错误信息的***一行显示发生的情况。例外有不同的类型,类型作为错误信息的一部分显示:上例中错误的类型有ZeroDivisionError、NameError和TypeError。作为例外类型显示的字符串是发生的例外的内置名。这对于所有内置例外成立,但对用户自定义例外不一定成立(用户***能遵守这样的约定)。标准例外名是内置的标识符(不是保留关键字)。
此行的其余部分是错误的细节,其解释依赖于例外类型。错误信息前面的部分以堆栈反跟踪的形式显示了发生错误的上下文环境。一般这包含了列出源代码行的一个列出源程序行的堆栈反跟踪;然而,它不会显示从标准输入读进的行。
【编辑推荐】