关于Python标准库

01

众所周知,Python是一个依赖强大的组件库完成对应功能的语言,为了便捷实现各项功能,前辈大牛们打造了多种多样的工具库公开提供给大众使用,而越来越多的库已经因为使用的广泛和普遍及其功能的强大,已经成为Python的标准库。

时至今日,Python 标准库已经非常庞大,所提供的组件涉及范围十分广泛,正如本文后面的内容中所显示的。这个库包含了多个内置模块 (以 C 编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O,此外还有大量以 Python 编写的模块,提供了日常编程中许多问题的标准解决方案。其中有些模块经过专门设计,通过将特定平台功能抽象化为平台中立的 API 来鼓励和加强 Python 程序的可移植性。

Windows 版本的 Python 安装程序通常包含整个标准库,往往还包含许多额外组件。对于类 Unix 操作系统,Python 通常会分成一系列的软件包,因此可能需要使用操作系统所提供的包管理工具来获取部分或全部可选组件。

在这个标准库以外还存在成千上万并且不断增加的其他组件 (从单独的程序、模块、软件包直到完整的应用开发框架),均可以在网络上搜索到并下载使用。

目录列表

02

本文将按以下顺序列举各分类下的标准库:

  • 文本
  • 二进制数据
  • 数据类型
  • 数学
  • 函数式编程
  • 文件与目录
  • 持久化
  • 压缩
  • 文件格式化
  • 加密
  • 操作系统工具
  • 并发
  • 进程间通信
  • 互联网
  • HTML与XML
  • 互联网协议与支持
  • 多媒体
  • 国际化
  • 编程框架
  • Tk图形用户接口
  • 开发工具
  • 调试
  • 运行时
  • 解释器
  • 导入模块
  • Python语言
  • 其它
  • Windows相关
  • Unix相关

文本

string:通用字符串操作

re:正则表达式操作

difflib:差异计算工具

textwrap:文本填充

unicodedata:Unicode字符数据库

stringprep:互联网字符串准备工具

readline:GNU按行读取接口

rlcompleter:GNU按行读取的实现函数

二进制数据

struct:将字节解析为打包的二进制数据

codecs:注册表与基类的编解码器

数据类型

datetime:基于日期与时间工具

calendar:通用月份函数

collections:容器数据类型

collections.abc:容器虚基类

heapq:堆队列算法

bisect:数组二分算法

array:高效数值数组

weakref:弱引用

types:内置类型的动态创建与命名

copy:浅拷贝与深拷贝

pprint:格式化输出

reprlib:交替repr()的实现

数学

numbers:数值的虚基类

math:数学函数

cmath:复数的数学函数

decimal:定点数与浮点数计算

fractions:有理数

random:生成伪随机数

函数式编程

itertools:为高效循环生成迭代器

functools:可调用对象上的高阶函数与操作

operator:针对函数的标准操作

文件与目录

os.path:通用路径名控制

fileinput:从多输入流中遍历行

stat:解释stat()的结果

filecmp:文件与目录的比较函数

tempfile:生成临时文件与目录

glob:Unix风格路径名格式的扩展

fnmatch:Unix风格路径名格式的比对

linecache:文本行的随机存储

shutil:高级文件操作

macpath:MacOS 9路径控制函数

持久化

pickle:Python对象序列化

copyreg:注册机对pickle的支持函数

shelve:Python对象持久化

marshal:内部Python对象序列化

dbm:Unix“数据库”接口

sqlite3:针对SQLite数据库的API2.0

压缩

zlib:兼容gzip的压缩

gzip:对gzip文件的支持

bz2:对bzip2压缩的支持

lzma:使用LZMA算法的压缩

zipfile:操作ZIP存档

tarfile:读写tar存档文件

文件格式化

csv:读写CSV文件

configparser:配置文件解析器

netrc:netrc文件处理器

xdrlib:XDR数据编码与解码

plistlib:生成和解析Mac OS X.plist文件

加密

hashlib:安全散列与消息摘要

hmac:针对消息认证的键散列

操作系统工具

os:多方面的操作系统接口

io:流核心工具

time:时间的查询与转化

argparser:命令行选项、参数和子命令的解析器

optparser:命令行选项解析器

getopt:C风格的命令行选项解析器

logging:Python日志工具

logging.config:日志配置

logging.handlers:日志处理器

getpass:简易密码输入

curses:字符显示的终端处理

curses.textpad:curses程序的文本输入域

curses.ascii:ASCII字符集工具

curses.panel:curses的控件栈扩展

platform:访问底层平台认证数据

errno:标准错误记号

ctypes:Python外部函数库

并发

threading:基于线程的并行

multiprocessing:基于进程的并行

concurrent:并发包

concurrent.futures:启动并行任务

subprocess:子进程管理

sched:事件调度

queue:同步队列

select:等待I / O完成

dummy_threading:threading模块的替代(当_thread不可用时)

_thread:底层的线程API(threading基于其上)

_dummy_thread:_thread模块的替代(当_thread不可用时)

进程间通信

socket:底层网络接口

ssl:socket对象的TLS / SSL填充器

asyncore:异步套接字处理器

asynchat:异步套接字命令 / 响应处理器

signal:异步事务信号处理器

mmap:内存映射文件支持

互联网

email:邮件与MIME处理包

json:JSON编码与解码

mailcap:mailcap文件处理

mailbox:多种格式控制邮箱

mimetypes:文件名与MIME类型映射

base64:RFC

3548:Base16、Base32、Base64编码

binhex:binhex4文件编码与解码

binascii:二进制码与ASCII码间的转化

quopri:MIME

quoted - printable数据的编码与解码

uu:uuencode文件的编码与解码

HTML与XML

html:HTML支持

html.parser:简单HTML与XHTML解析器

html.entities:HTML通用实体的定义

xml:XML处理模块

xml.etree.ElementTree:树形XML元素API

xml.dom:XML DOM API

xml.dom.minidom:XML DOM最小生成树

xml.dom.pulldom:构建部分DOM树的支持

xml.sax:SAX2解析的支持

xml.sax.handler:SAX处理器基类

xml.sax.saxutils:SAX工具

xml.sax.xmlreader:SAX解析器接口

xml.parsers.expat:运用Expat快速解析XML

互联网协议与支持

webbrowser:简易Web浏览器控制器

cgi:CGI支持

cgitb:CGI脚本反向追踪管理器

wsgiref:WSGI工具与引用实现

urllib:URL处理模块

urllib.request:打开URL连接的扩展库

urllib.response:urllib模块的响应类

urllib.parse:将URL解析成组件

urllib.error:urllib.request引发的异常类

urllib.robotparser:robots.txt的解析器

http:HTTP模块

http.client:HTTP协议客户端

ftplib:FTP协议客户端

poplib:POP协议客户端

imaplib:IMAP4协议客户端

nntplib:NNTP协议客户端

smtplib:SMTP协议客户端

smtpd:SMTP服务器

telnetlib:Telnet客户端

uuid:RFC4122的UUID对象

socketserver:网络服务器框架

http.server:HTTP服务器

http.cookies:HTTPCookie状态管理器

http.cookiejar:HTTP客户端的Cookie处理

xmlrpc:XML - RPC服务器和客户端模块

xmlrpc.client:XML - RPC客户端访问

xmlrpc.server:XML - RPC服务器基础

ipaddress:IPv4 / IPv6控制库

多媒体

audioop:处理原始音频数据

aifc:读写AIFF和AIFC文件

sunau:读写Sun AU文件

wave:读写WAV文件

chunk:读取IFF大文件

colorsys:颜色系统间转化

imghdr:指定图像类型

sndhdr:指定声音文件类型

ossaudiodev:访问兼容OSS的音频设备

国际化

gettext:多语言的国际化服务

locale:国际化服务

编程框架

turtle:Turtle图形库

cmd:基于行的命令解释器支持

shlex:简单词典分析

Tk图形用户接口

tkinter:Tcl / Tk接口

tkinter.ttk:Tk主题控件

tkinter.tix:Tk扩展控件

tkinter.scrolledtext:滚轴文本控件

开发工具

pydoc:文档生成器和在线帮助系统

doctest:交互式Python示例

unittest:单元测试框架

unittest.mock:模拟对象库

test:Python回归测试包

test.support:Python测试工具套件

venv:虚拟环境搭建

调试

bdb:调试框架

faulthandler:Python反向追踪库

pdb:Python调试器

timeit:小段代码执行时间测算

trace:Python执行状态追踪

运行时

sys:系统相关的参数与函数

sysconfig:访问Python配置信息

builtins:内置对象

main:顶层脚本环境

warnings:警告控制

contextlib:with状态的上下文工具

abc:虚基类

atexit:出口处理器

traceback:打印或读取一条栈的反向追踪

future:未来状态定义

gc:垃圾回收接口

inspect:检查存活的对象

site:址相关的配置钩子(hook)

fpectl:浮点数异常控制

distutils:生成和安装Python模块

解释器

code:基类解释器

codeop:编译Python代码

导入模块

imp:访问import模块的内部

zipimport:从ZIP归档中导入模块

pkgutil:包扩展工具

modulefinder:通过脚本查找模块

runpy:定位并执行Python模块

importlib:import的一种实施

Python语言

parser:访问Python解析树

ast:抽象句法树

symtable:访问编译器符号表

symbol:Python解析树中的常量

token:Python解析树中的常量

keyword:Python关键字测试

tokenize:Python源文件分词

tabnany:模糊缩进检测

pyclbr:Python类浏览支持

py_compile:编译Python源文件

compileall:按字节编译Python库

dis:Python字节码的反汇编器

pickletools:序列化开发工具

其他

formatter:通用格式化输出

Windows相关

msilib:读写Windows的Installer文件

msvcrt:MS VC + + Runtime的有用程序

winreg:Windows注册表访问

winsound:Windows声音播放接口

Unix相关

posix:最常用的POSIX调用

pwd:密码数据库

spwd:影子密码数据库

grp:组数据库

crypt:Unix密码验证

termios:POSIX风格的tty控制

tty:终端控制函数

pty:伪终端工具

fcntl:系统调用fcntl()和ioctl()

pipes:shell管道接口

resource:资源可用信息

nis:Sun的NIS的接口

syslog:Unix 日志服务

###########################################################################

我在专栏文章中写过一篇 Python不能不知的模块 - Python之美 - 知乎专栏,列举了一些标准库中一些不太出名但是都应该要掌握的模块:

1. argparse。 用来替代optparse的命令行解析库。如果你考虑用更直观的,推荐docopt,它使用docstring所见即所得实现命令行解析。

2. collections。 包含了一些额外的数据类型。其中的OrderedDict(有序列的字典)、defaultdict(带有默认值的字典)、namedtuple(通过创建带有字段属性的元组子类)和deque(高效实现插入和删除操作的双向列表)非常常用。

3. functools。 这个模块有一些非常有用的工具,其中的partial(偏函数)、wraps(将被包装函数的信息拷贝过来)、total_ordering(只需要定义2个__XX__方法就可实现对象对比的类装饰器)、cmp_to_key(将老式的比较函数转化为关键字函数)非常常用。

4. glob。 文件名的shell模式匹配,你不用遍历整个目录判断每个文件是不是符合,使用glob一句话就解决。

6. os。应该是日常工作最常用的模块了,你是否了解它里面所有的函数和实现呢?举个例子,获取环境变量,我之前这样用:

In : os.environ.get('PYTHONPATH')

读完源码之后我学了一招:

os.getenv('PYTHONPATH')

好吧,省了5个字符。

7. Queue。这个模块用于多线程编程,它是一个线程安全的FIFO(先进先出)的队列实现。如果是多进程编程,选用multiprocessing.queues中的Queue、SimpleQueue、JoinableQueue这三个队列实现。

8. SimpleHTTPServer。最简单地HTTP Server实现。不使用Web框架,一句:

python -m SimpleHTTPServer PORT

就可以运行起来静态服务。平时用它预览和下载文件太方便了。

9. subprocess。 如果你还被某些书籍引导使用os.system或者os.popen等模块,现在是放弃它们的时候了,这个模块会满足你绝大多数的系统命令执行、执行结果获取和解析等需求。其中最有用的是call(执行系统命令)、check_call(执行结果不为0则抛出异常)、check_output(最方便的获取执行的输出的函数)、Popen+PIPE(支持管道的多命令执行)。

10. threading。多线程模块,重要性也不必说。

但是注意,并不是所有Python标准库都需要很熟悉,因为有些平时用不到,有些在Python 3的时候已经废弃。

1. requests。人性化的HTTP请求库,这还有不知道的么...

2. pip。Python 包和依赖关系管理工具,还有不用的么。

3. virtualenv。创建独立 Python 环境的工具。

4. IPython。附带非常额外功能的交互环境。

5. httpie。一个命令行HTTP 客户端,cURL 的替代品,易用性更好。

6. you-get。一个 YouTube/Youku/Niconico 视频下载器。

7. youtube-dl。用来下载 YouTube 视频的工具。

8. Pillow。PIL的fork版本,操作图像库。

9. Cython。优化的 Python 静态编译器。使用类型混合使 Python 编译成 C 或 C++ 模块来获得性能的极大提升。

10. pycodestyle。就是原来的pep8,帮你检查代码是否符合PEP8标准。

11. Flake8:静态检查工具,它包含PyFlakes(静态检查Python代码逻辑错误)、pycodestyle和McCabe(分析Python代码复杂度)三个工具。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐