10.python标准库概览
10.1操作系统接口
os模块提供了很多与操作系统交互的函数(Operating System)
函数名 |
使用方法 |
-getcwd() |
返回当前工作目录 |
-chdir(path) |
改变工作目录 |
-listdir(path=”.”) |
列举指定目录中的文件名(“.”表示当前目录,”..”表示上一级目录) |
-mkdir(path) |
创建单层目录,如该目录已存在抛出异常 |
-makedirs(path) |
递归创建多层目录,如该目录已存在抛出异常,注意:”E:\\\\a\\\\b”和”E:\\\\a\\c”并不会冲突 |
-remove() |
删除文件 |
-rmdir(path) |
删除单层目录,如该目录非空则抛出异常 |
-removedirs(path) |
递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空抛出异常 |
-rename(old,new) |
将文件old重命名为new |
-system(command) |
运行系统的shell命令 |
应该用import os风格而非from os import *。这样可以保证随操作系统不同而有所变化的os.open()不会覆盖内置函数open()
在使用一些像os这样的大型模块是内置的dir()和help()函数非常有用:
import os dir(os) <returns a list of all module functions> help(os) <returns an extensive mnaual page created from the module’s docstring>
针对日常的文件和目录管理任务,shutil模块提供了一个易于使用的高级接口:
10.2文件通配符
glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:
10.3命令行参数
通用工具脚本经常调用命名行参数。这些命令行参数以链表形式存储于sys模块的argv变量。例如在命令行中执行python demo.py one two three后可以得到以下输出结果:
import sys print(sys.argv) [‘demo.py’,’one’,’two’,’three’]
10.4错误输出重定向和程序终止
sys还有stdin,stdout和stderr属性,即使在stdout被重定向时,后者也可以用于显示警告和错误信息:
大多数脚本的直接终止都使用sys.exit()
10.5字符串正则匹配
re模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁,优化的解决方案:
只需简单的操作时,字符串方法最好用,易读:
10.6数学
math模块为浮点运算提供了对底层C函数库的访问:
random提供了生成随机数的工具:
SciPy<http://scipy.org>项目提供了许多数值计算的模块
10.7互联网访问
有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从urls接收的数据的urllib.request以及用于发送电子邮件的smtplib:
此模块在后面的网络爬虫中非常重要。
10.8日期和时间
datetime模块为日期和时间处理同时提供了简单和复杂的方法。支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。该模块还支持时区处理。
10.9数据压缩
以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,lzma,zipfile以及tarfile.
10.10性能度量
有些1用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python提供了一个度量工具。例如使用元祖封装和拆封来交换元素看起来要比使用传统的方法要诱人的多。timeit证明了后者更快一些:
相对于timeit的细粒度,profile和pstats模块提供了针对更大代码块的时间度量工具。
10.11质量控制
开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试。
doctest 模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。通过用户提供的例子,它发展了文档,允许 doctest 模块确认代码的结果是否与文档一致:
unittest 模块不像 doctest 模块那么容易使用,不过它可以在一个独立的文件里提供一个更全面的测试集:
10.12瑞士军刀
- xmlrpc.client 和 xmlrpc.server 模块让远程过程调用变得轻而易举。尽管模块有这样的名字,用户无需拥有 XML 的知识或处理 XML。
- email 包是一个管理邮件信息的库,包括MIME和其它基于 RFC2822 的信息文档。
- 不同于实际发送和接收信息的 smtplib 和 poplib 模块,email 包包含一个构造或解析复杂消息结构(包括附件)及实现互联网编码和头协议的完整工具集。
- xml.dom 和 xml.sax 包为流行的信息交换格式提供了强大的支持。同样, csv 模块支持在通用数据库格式中直接读写。
- 综合起来,这些模块和包大大简化了 Python 应用程序和其它工具之间的数据交换
- 国际化由 gettext, locale 和 codecs 包支持。