Awesome Open Source
Awesome Open Source

The Python Standard Library by Example | Python3 标准库

"The Python Standard Library by Example" ebook and source code

《Python3 标准库》电子书和配套代码

一本又厚又全的讲解Python3标准库的书籍(1000多页)!适合当作字典参考或者闲暇时慢慢阅读。

电子书见本仓库中:The Python Standard Library by Example.pdf

E-book: The Python Standard Library by Example.pdf in this repo

中文版本

中文目录

展开查看

  • 译者序
  • 前言
  • 第1章 文本 1
  • 1.1 string:文本常量和模板 1
  • 1.1.1 函数 1
  • 1.1.2 模板 2
  • 1.1.3 高级模板 3
  • 1.1.4 Formatter 5
  • 1.1.5 常量 5
  • 1.2 textwrap:格式化文本段落 6
  • 1.2.1 示例数据 6
  • 1.2.2 填充段落 7
  • 1.2.3 去除现有的缩进 7
  • 1.2.4 结合dedent和fill 8
  • 1.2.5 缩进块 8
  • 1.2.6 悬挂缩进 10
  • 1.2.7 截断长文本 10
  • 1.3 re:正则表达式 11
  • 1.3.1 查找文本中的模式 11
  • 1.3.2 编译表达式 12
  • 1.3.3 多重匹配 13
  • 1.3.4 模式语法 14
  • 1.3.5 限制搜索 22
  • 1.3.6 用组解析匹配 24
  • 1.3.7 搜索选项 29
  • 1.3.8 前向或后向 35
  • 1.3.9 自引用表达式 38
  • 1.3.10 用模式修改字符串 42
  • 1.3.11 利用模式拆分 44
  • 1.4 difflib:比较序列 46
  • 1.4.1 比较文本体 47
  • 1.4.2 无用数据 49
  • 1.4.3 比较任意类型 50
  • 第2章 数据结构 52
  • 2.1 enum:枚举类型 53
  • 2.1.1 创建枚举 53
  • 2.1.2 迭代 53
  • 2.1.3 比较Enum 54
  • 2.1.4 唯一枚举值 55
  • 2.1.5 通过编程创建枚举 56
  • 2.1.6 非整数成员值 58
  • 2.2 collections:容器数据类型 60
  • 2.2.1 ChainMap:搜索多个字典 60
  • 2.2.2 Counter:统计可散列的对象 63
  • 2.2.3 defaultdict:缺少的键返回一个默认值 66
  • 2.2.4 deque:双端队列 67
  • 2.2.5 namedtuple:带命名字段的元组子类 70
  • 2.2.6 OrderedDict:记住向字典中增加键的顺序 74
  • 2.2.7 collections.abc:容器的抽象基类 76
  • 2.3 数组:固定类型数据序列 78
  • 2.3.1 初始化 78
  • 2.3.2 处理数组 79
  • 2.3.3 数组和文件 79
  • 2.3.4 候选字节顺序 80
  • 2.4 heapq:堆排序算法 81
  • 2.4.1 示例数据 81
  • 2.4.2 创建堆 82
  • 2.4.3 访问堆的内容 83
  • 2.4.4 堆的数据极值 85
  • 2.4.5 高效合并有序序列 85
  • 2.5 bisect:维护有序列表 86
  • 2.5.1 有序插入 86
  • 2.5.2 处理重复 87
  • 2.6 queue:线程安全的FIFO实现 88
  • 2.6.1 基本FIFO队列 88
  • 2.6.2 LIFO队列 89
  • 2.6.3 优先队列 89
  • 2.6.4 构建一个多线程播客客户程序 90
  • 2.7 struct:二进制数据结构 93
  • 2.7.1 函数与Struct类 93
  • 2.7.2 打包和解包 93
  • 2.7.3 字节序 94
  • 2.7.4 缓冲区 95
  • 2.8 weakref:对象的非永久引用 96
  • 2.8.1 引用 96
  • 2.8.2 引用回调 97
  • 2.8.3 最终化对象 98
  • 2.8.4 代理 100
  • 2.8.5 缓存对象 101
  • 2.9 copy:复制对象 103
  • 2.9.1 浅副本 103
  • 2.9.2 深副本 104
  • 2.9.3 定制复制行为 105
  • 2.9.4 深副本中的递归 106
  • 2.10 pprint:美观打印数据结构 107
  • 2.10.1 打印 108
  • 2.10.2 格式化 108
  • 2.10.3 任意类 109
  • 2.10.4 递归 110
  • 2.10.5 限制嵌套输出 110
  • 2.10.6 控制输出宽度 111
  • 第3章 算法 113
  • 3.1 functools:管理函数的工具 113
  • 3.1.1 修饰符 113
  • 3.1.2 比较 119
  • 3.1.3 缓存 122
  • 3.1.4 缩减数据集 125
  • 3.1.5 泛型函数 127
  • 3.2 itertools:迭代器函数 129
  • 3.2.1 合并和分解迭代器 129
  • 3.2.2 转换输入 132
  • 3.2.3 生成新值 133
  • 3.2.4 过滤 135
  • 3.2.5 数据分组 138
  • 3.2.6 合并输入 139
  • 3.3 operator:内置操作符的函数接口 144
  • 3.3.1 逻辑操作 144
  • 3.3.2 比较操作符 145
  • 3.3.3 算术操作符 145
  • 3.3.4 序列操作符 146
  • 3.3.5 原地操作符 148
  • 3.3.6 属性和元素“获取方法” 148
  • 3.3.7 结合操作符和定制类 150
  • 3.4 contextlib:上下文管理器工具 151
  • 3.4.1 上下文管理器API 151
  • 3.4.2 上下文管理器作为函数修饰符 153
  • 3.4.3 从生成器到上下文管理器 154
  • 3.4.4 关闭打开的句柄 156
  • 3.4.5 忽略异常 157
  • 3.4.6 重定向输出流 158
  • 3.4.7 动态上下文管理器栈 159
  • 第4章 日期和时间 166
  • 4.1 time:时钟时间 166
  • 4.1.1 比较时钟 166
  • 4.1.2 墙上时钟时间 167
  • 4.1.3 单调时钟 168
  • 4.1.4 处理器时钟时间 169
  • 4.1.5 性能计数器 170
  • 4.1.6 时间组成 170
  • 4.1.7 处理时区 171
  • 4.1.8 解析和格式化时间 172
  • 4.2 datetime:日期和时间值管理 174
  • 4.2.1 时间 174
  • 4.2.2 日期 175
  • 4.2.3 timedelta 177
  • 4.2.4 日期算术运算 178
  • 4.2.5 比较值 179
  • 4.2.6 结合日期和时间 179
  • 4.2.7 格式化和解析 180
  • 4.2.8 时区 182
  • 4.3 calendar:处理日期 183
  • 4.3.1 格式化示例 183
  • 4.3.2 本地化环境 185
  • 4.3.3 计算日期 186
  • 第5章 数学运算 188
  • 5.1 decimal:定点数和浮点数的数学运算 188
  • 5.1.1 Decimal 188
  • 5.1.2 格式化 189
  • 5.1.3 算术运算 190
  • 5.1.4 特殊值 191
  • 5.1.5 上下文 192
  • 5.2 fractions:有理数 196
  • 5.2.1 创建Fraction实例 197
  • 5.2.2 算术运算 198
  • 5.2.3 近似值 199
  • 5.3 random:伪随机数生成器 199
  • 5.3.1 生成随机数 200
  • 5.3.2 指定种子 200
  • 5.3.3 保存状态 201
  • 5.3.4 随机整数 202
  • 5.3.5 选择随机元素 203
  • 5.3.6 排列 203
  • 5.3.7 采样 205
  • 5.3.8 多个并发生成器 205
  • 5.3.9 SystemRandom 206
  • 5.3.10 非均匀分布 207
  • 5.4 math:数学函数 208
  • 5.4.1 特殊常量 208
  • 5.4.2 测试异常值 208
  • 5.4.3 比较 210
  • 5.4.4 将浮点值转换为整数 212
  • 5.4.5 浮点值的其他表示 213
  • 5.4.6 正号和负号 214
  • 5.4.7 常用计算 215
  • 5.4.8 指数和对数 218
  • 5.4.9 角 222
  • 5.4.10 三角函数 224
  • 5.4.11 双曲函数 226
  • 5.4.12 特殊函数 227
  • 5.5 statistics:统计计算 228
  • 5.5.1 平均值 228
  • 5.5.2 方差 230
  • 第6章 文件系统 232
  • 6.1 os.path:平台独立的文件名管理 233
  • 6.1.1 解析路径 233
  • 6.1.2 建立路径 236
  • 6.1.3 规范化路径 237
  • 6.1.4 文件时间 238
  • 6.1.5 测试文件 238
  • 6.2 pathlib:文件系统路径作为对象 240
  • 6.2.1 路径表示 240
  • 6.2.2 建立路径 240
  • 6.2.3 解析路径 242
  • 6.2.4 创建具体路径 243
  • 6.2.5 目录内容 244
  • 6.2.6 读写文件 246
  • 6.2.7 管理目录和符号链接 246
  • 6.2.8 文件类型 247
  • 6.2.9 文件属性 248
  • 6.2.10 权限 250
  • 6.2.11 删除 250
  • 6.3 glob:文件名模式匹配 252
  • 6.3.1 示例数据 252
  • 6.3.2 通配符 252
  • 6.3.3 单字符通配符 253
  • 6.3.4 字符区间 253
  • 6.3.5 转义元字符 254
  • 6.4 fnmatch:UNIX式glob模式匹配 254
  • 6.4.1 简单匹配 254
  • 6.4.2 过滤 255
  • 6.4.3 转换模式 256
  • 6.5 linecache:高效读取文本文件 257
  • 6.5.1 测试数据 257
  • 6.5.2 读取特定行 257
  • 6.5.3 处理空行 258
  • 6.5.4 错误处理 258
  • 6.5.5 读取Python源文件 259
  • 6.6 tempfile:临时文件系统对象 260
  • 6.6.1 临时文件 260
  • 6.6.2 命名文件 262
  • 6.6.3 假脱机文件 262
  • 6.6.4 临时目录 263
  • 6.6.5 预测名 264
  • 6.6.6 临时文件位置 264
  • 6.7 shutil:高层文件操作 265
  • 6.7.1 复制文件 265
  • 6.7.2 复制文件元数据 268
  • 6.7.3 处理目录树 269
  • 6.7.4 查找文件 271
  • 6.7.5 归档 272
  • 6.7.6 文件系统空间 275
  • 6.8 filecmp:比较文件 276
  • 6.8.1 示例数据 276
  • 6.8.2 比较文件 278
  • 6.8.3 比较目录 279
  • 6.8.4 在程序中使用差异 280
  • 6.9 mmap:内存映射文件 283
  • 6.9.1 读文件 284
  • 6.9.2 写文件 285
  • 6.9.3 正则表达式 286
  • 6.10 codecs:字符串编码和解码 287
  • 6.10.1 Unicode入门 287
  • 6.10.2 处理文件 289
  • 6.10.3 字节序 291
  • 6.10.4 错误处理 293
  • 6.10.5 编码转换 295
  • 6.10.6 非Unicode编码 296
  • 6.10.7 增量编码 297
  • 6.10.8 Unicode数据和网络通信 299
  • 6.10.9 定义定制编码 301
  • 6.11 io:文本、十进制和原始流I/O工具 307
  • 6.11.1 内存中的流 307
  • 6.11.2 为文本数据包装字节流 308
  • 第7章 数据持久存储与交换 310
  • 7.1 pickle:对象串行化 311
  • 7.1.1 编码和解码字符串中的数据 311
  • 7.1.2 处理流 312
  • 7.1.3 重构对象的问题 313
  • 7.1.4 不可腌制的对象 314
  • 7.1.5 循环引用 316
  • 7.2 shelve:对象的持久存储 318
  • 7.2.1 创建一个新shelf 318
  • 7.2.2 写回 319
  • 7.2.3 特定shelf类型 320
  • 7.3 dbm:UNIX键-值数据库 320
  • 7.3.1 数据库类型 321
  • 7.3.2 创建一个新数据库 321
  • 7.3.3 打开一个现有数据库 322
  • 7.3.4 错误情况 322
  • 7.4 sqlite3:嵌入式关系数据库 323
  • 7.4.1 创建数据库 323
  • 7.4.2 获取数据 326
  • 7.4.3 查询元数据 327
  • 7.4.4 行对象 328
  • 7.4.5 在查询中使用变量 329
  • 7.4.6 批量加载 331
  • 7.4.7 定义新的列类型 331
  • 7.4.8 确定列类型 334
  • 7.4.9 事务 336
  • 7.4.10 隔离级别 338
  • 7.4.11 内存中的数据库 341
  • 7.4.12 导出数据库内容 341
  • 7.4.13 在SQL中使用Python函数 342
  • 7.4.14 带正则表达式的查询 344
  • 7.4.15 定制聚集 345
  • 7.4.16 线程和连接共享 346
  • 7.4.17 限制对数据的访问 347
  • 7.5 xml.etree.ElementTree:XML操纵API 349
  • 7.5.1 解析XML文档 349
  • 7.5.2 遍历解析树 350
  • 7.5.3 查找文档中的节点 351
  • 7.5.4 解析节点属性 352
  • 7.5.5 解析时监视事件 354
  • 7.5.6 创建一个定制树构造器 356
  • 7.5.7 解析串 357
  • 7.5.8 用元素节点构造文档 359
  • 7.5.9 美观打印XML 359
  • 7.5.10 设置元素属性 360
  • 7.5.11 由节点列表构造树 362
  • 7.5.12 将XML串行化至一个流 364
  • 7.6 csv:逗号分隔值文件 366
  • 7.6.1 读文件 366
  • 7.6.2 写文件 367
  • 7.6.3 方言 368
  • 7.6.4 使用字段名 373
  • 第8章 数据压缩与归档 375
  • 8.1 zlib:GNU zlib压缩 375
  • 8.1.1 处理内存中的数据 375
  • 8.1.2 增量压缩与解压缩 377
  • 8.1.3 混合内容流 378
  • 8.1.4 校验和 378
  • 8.1.5 压缩网络数据 379
  • 8.2 gzip:读写GNU zip文件 382
  • 8.2.1 写压缩文件 382
  • 8.2.2 读压缩数据 384
  • 8.2.3 处理流 385
  • 8.3 bz2:bzip2压缩 386
  • 8.3.1 内存中的一次性操作 386
  • 8.3.2 增量压缩和解压缩 388
  • 8.3.3 混合内容流 388
  • 8.3.4 写压缩文件 389
  • 8.3.5 读压缩文件 390
  • 8.3.6 读写Unicode数据 391
  • 8.3.7 压缩网络数据 392
  • 8.4 tarfile:tar归档访问 395
  • 8.4.1 测试tar文件 396
  • 8.4.2 从归档读取元数据 396
  • 8.4.3 从归档抽取文件 397
  • 8.4.4 创建新归档 399
  • 8.4.5 使用候选归档成员名 399
  • 8.4.6 从非文件源写数据 400
  • 8.4.7 追加到归档 400
  • 8.4.8 处理压缩归档 401
  • 8.5 zipfile:ZIP归档访问 402
  • 8.5.1 测试ZIP文件 402
  • 8.5.2 从归档读取元数据 402
  • 8.5.3 从归档抽取归档文件 404
  • 8.5.4 创建新归档 404
  • 8.5.5 使用候选归档成员名 406
  • 8.5.6 从非文件源写数据 406
  • 8.5.7 利用ZipInfo实例写数据 407
  • 8.5.8 追加到文件 407
  • 8.5.9 Python ZIP归档 408
  • 8.5.10 限制 410
  • 第9章 加密 411
  • 9.1 hashlib:密码散列 411
  • 9.1.1 散列算法 411
  • 9.1.2 示例数据 412
  • 9.1.3 MD5示例 412
  • 9.1.4 SHA1示例 412
  • 9.1.5 按名创建散列 413
  • 9.1.6 增量更新 413
  • 9.2 hmac:密码消息签名与验证 414
  • 9.2.1 消息签名 415
  • 9.2.2 候选摘要类型 415
  • 9.2.3 二进制摘要 416
  • 9.2.4 消息签名的应用 416
  • 第 10 章 使用进程、线程和协程提供并发性 420
  • 10.1 subprocess:创建附加进程 420
  • 10.1.1 运行外部命令 421
  • 10.1.2 直接处理管道 425
  • 10.1.3 连接管道段 427
  • 10.1.4 与其他命令交互 428
  • 10.1.5 进程间传递信号 430
  • 10.2 signal:异步系统事件 434
  • 10.2.1 接收信号 434
  • 10.2.2 获取已注册的处理器 435
  • 10.2.3 发送信号 436
  • 10.2.4 闹铃 436
  • 10.2.5 忽略信号 437
  • 10.2.6 信号和线程 438
  • 10.3 threading:进程中管理并发操作 440
  • 10.3.1 Thread对象 440
  • 10.3.2 确定当前线程 441
  • 10.3.3 守护与非守护线程 442
  • 10.3.4 枚举所有线程 444
  • 10.3.5 派生线程 445
  • 10.3.6 定时器线程 447
  • 10.3.7 线程间传送信号 447
  • 10.3.8 控制资源访问 449
  • 10.3.9 同步线程 453
  • 10.3.10 限制资源的并发访问 456
  • 10.3.11 线程特定的数据 457
  • 10.4 multiprocessing:像线程一样管理进程 459
  • 10.4.1 multiprocessing基础 460
  • 10.4.2 可导入的目标函数 461
  • 10.4.3 确定当前进程 461
  • 10.4.4 守护进程 462
  • 10.4.5 等待进程 463
  • 10.4.6 终止进程 465
  • 10.4.7 进程退出状态 466
  • 10.4.8 日志 467
  • 10.4.9 派生进程 469
  • 10.4.10 向进程传递消息 469
  • 10.4.11 进程间信号传输 472
  • 10.4.12 控制资源访问 473
  • 10.4.13 同步操作 474
  • 10.4.14 控制资源的并发访问 475
  • 10.4.15 管理共享状态 476
  • 10.4.16 共享命名空间 477
  • 10.4.17 进程池 479
  • 10.4.18 实现MapReduce 480
  • 10.5 asyncio:异步I/O、事件循环和并发工具 484
  • 10.5.1 异步并发概念 484
  • 10.5.2 利用协程合作完成多任务 485
  • 10.5.3 调度常规函数调用 488
  • 10.5.4 异步地生成结果 490
  • 10.5.5 并发地执行任务 492
  • 10.5.6 组合协程和控制结构 495
  • 10.5.7 同步原语 499
  • 10.5.8 提供协议类抽象的异步I/O 505
  • 10.5.9 使用协程和流的异步I/O 510
  • 10.5.10 使用SSL 514
  • 10.5.11 与域名服务交互 516
  • 10.5.12 使用子进程 518
  • 10.5.13 接收UNIX信号 523
  • 10.5.14 结合使用协程、线程与进程 525
  • 10.5.15 用asyncio调试 527
  • 10.6 concurrent.futures:管理并发任务池 530
  • 10.6.1 利用基本线程池使用map() 531
  • 10.6.2 调度单个任务 532
  • 10.6.3 按任意顺序等待任务 532
  • 10.6.4 Future回调 533
  • 10.6.5 撤销任务 534
  • 10.6.6 任务中的异常 535
  • 10.6.7 上下文管理器 536
  • 10.6.8 进程池 537
  • 第 11 章 网络通信 539
  • 11.1 ipaddress:Internet地址 539
  • 11.1.1 地址 539
  • 11.1.2 网络 540
  • 11.1.3 接口 543
  • 11.2 socket:网络通信 544
  • 11.2.1 寻址、协议簇和套接字类型 544
  • 11.2.2 TCP/IP客户和服务器 552
  • 11.2.3 用户数据报客户和服务器 558
  • 11.2.4 UNIX域套接字 560
  • 11.2.5 组播 563
  • 11.2.6 发送二进制数据 566
  • 11.2.7 非阻塞通信和超时 568
  • 11.3 selectors:I/O多路复用抽象 568
  • 11.3.1 操作模型 569
  • 11.3.2 回送服务器 569
  • 11.3.3 回送客户 570
  • 11.3.4 服务器和客户 571
  • 11.4 select:高效等待I/O 572
  • 11.4.1 使用select() 572
  • 11.4.2 带超时的非阻塞I/O 577
  • 11.4.3 使用poll() 579
  • 11.4.4 平台特定的选项 582
  • 11.5 socketserver:创建网络服务器 583
  • 11.5.1 服务器类型 583
  • 11.5.2 服务器对象 583
  • 11.5.3 实现服务器 584
  • 11.5.4 请求处理器 584
  • 11.5.5 回送示例 584
  • 11.5.6 线程和进程 588
  • 第 12 章 互联网 592
  • 12.1 urllib.parse:分解URL 592
  • 12.1.1 解析 593
  • 12.1.2 反解析 595
  • 12.1.3 连接 596
  • 12.1.4 解码查询参数 597
  • 12.2 urllib.request:网络资源访问 599
  • 12.2.1 HTTP GET 599
  • 12.2.2 编码参数 600
  • 12.2.3 HTTP POST 601
  • 12.2.4 添加发出首部 602
  • 12.2.5 从请求提交表单数据 602
  • 12.2.6 上传文件 603
  • 12.2.7 创建定制协议处理器 606
  • 12.3 urllib.robotparser: Internet蜘蛛访问控制 * 608
  • 12.3.1 robots.txt 608
  • 12.3.2 测试访问权限 609
  • 12.3.3 长寿命蜘蛛 610
  • 12.4 base64:用ASCII编码二进制数据 611
  • 12.4.1 Base64编码 611
  • 12.4.2 Base64解码 612
  • 12.4.3 URL安全的变种 612
  • 12.4.4 其他编码 613
  • 12.5 http.server:实现Web服务器的基类 615
  • 12.5.1 HTTP GET 615
  • 12.5.2 HTTP POST 616
  • 12.5.3 线程和进程 618
  • 12.5.4 处理错误 619
  • 12.5.5 设置首部 620
  • 12.5.6 命令行用法 621
  • 12.6 http.cookies:HTTP cookie 622
  • 12.6.1 创建和设置cookie 622
  • 12.6.2 Morsel 622
  • 12.6.3 编码的值 624
  • 12.6.4 接收和解析Cookie首部 624
  • 12.6.5 候选输出格式 625
  • 12.7 webbrowser:显示Web页面 626
  • 12.7.1 简单示例 626
  • 12.7.2 窗口与标签页 626
  • 12.7.3 使用特定浏览器 627
  • 12.7.4 BROWSER变量 627
  • 12.7.5 命令行接口 627
  • 12.8 uuid:全局唯一标识符 628
  • 12.8.1 UUID 1:IEEE 802 MAC地址 628
  • 12.8.2 UUID 3和5:基于名字的值 630
  • 12.8.3 UUID 4:随机值 631
  • 12.8.4 处理UUID对象 631
  • 12.9 json:JavaScript对象记法 632
  • 12.9.1 编码和解码简单数据类型 633
  • 12.9.2 人类可读和紧凑输出 633
  • 12.9.3 编码字典 635
  • 12.9.4 处理定制类型 636
  • 12.9.5 编码器和解码器类 638
  • 12.9.6 处理流和文件 640
  • 12.9.7 混合数据流 641
  • 12.9.8 命令行上处理JSON 641
  • 12.10 xmlrpc.client:XML-RPC的客户库 642
  • 12.10.1 连接服务器 643
  • 12.10.2 数据类型 645
  • 12.10.3 传递对象 648
  • 12.10.4 二进制数据 648
  • 12.10.5 异常处理 650
  • 12.10.6 将调用组合在一个消息中 650
  • 12.11 xmlrpc.server:一个XML-RPC服务器 652
  • 12.11.1 一个简单的服务器 652
  • 12.11.2 候选API名 653
  • 12.11.3 加点的API名 654
  • 12.11.4 任意API名 655
  • 12.11.5 公布对象的方法 656
  • 12.11.6 分派调用 657
  • 12.11.7 自省API 659
  • 第 13 章 email 662
  • 13.1 smtplib:简单邮件传输协议客户 662
  • 13.1.1 发送email消息 662
  • 13.1.2 认证和加密 663
  • 13.1.3 验证email地址 666
  • 13.2 smtpd:示例邮件服务器 667
  • 13.2.1 邮件服务器基类 667
  • 13.2.2 调试服务器 669
  • 13.2.3 代理服务器 670
  • 13.3 mailbox:管理email归档 670
  • 13.3.1 mbox 671
  • 13.3.2 Maildir 673
  • 13.3.3 消息标志 678
  • 13.3.4 其他格式 680
  • 13.4 imaplib:IMAP4客户库 680
  • 13.4.1 变种 680
  • 13.4.2 连接服务器 681
  • 13.4.3 示例配置 682
  • 13.4.4 列出邮箱 682
  • 13.4.5 邮箱状态 684
  • 13.4.6 选择邮箱 686
  • 13.4.7 搜索消息 686
  • 13.4.8 搜索规则 687
  • 13.4.9 获取消息 689
  • 13.4.10 完整消息 693
  • 13.4.11 上传消息 694
  • 13.4.12 移动和复制消息 695
  • 13.4.13 删除消息 696
  • 第 14 章 应用构建模块 699
  • 14.1 argparse:命令行选项和参数解析 700
  • 14.1.1 建立解析器 700
  • 14.1.2 定义参数 700
  • 14.1.3 解析命令行 700
  • 14.1.4 简单示例 701
  • 14.1.5 帮助输出 707
  • 14.1.6 解析器组织 711
  • 14.1.7 高级参数处理 716
  • 14.2 getopt:命令行选项解析 722
  • 14.2.1 函数参数 722
  • 14.2.2 短格式选项 723
  • 14.2.3 长格式选项 723
  • 14.2.4 一个完整的例子 723
  • 14.2.5 缩写长格式选项 725
  • 14.2.6 GNU式选项解析 725
  • 14.2.7 结束参数处理 726
  • 14.3 readline:GNU readline库 727
  • 14.3.1 配置readline 727
  • 14.3.2 完成文本 728
  • 14.3.3 访问完成缓冲区 731
  • 14.3.4 输入历史 733
  • 14.3.5 hook 736
  • 14.4 getpass:安全密码提示 737
  • 14.4.1 示例 737
  • 14.4.2 无终端使用getpass 738
  • 14.5 cmd:面向行的命令处理器 739
  • 14.5.1 处理命令 739
  • 14.5.2 命令参数 740
  • 14.5.3 现场帮助 741
  • 14.5.4 自动完成 742
  • 14.5.5 覆盖基类方法 744
  • 14.5.6 通过属性配置Cmd 745
  • 14.5.7 运行shell命令 746
  • 14.5.8 候选输入 747
  • 14.5.9 sys.argv的命令 748
  • 14.6 shlex:解析shell类语法 749
  • 14.6.1 解析加引号的字符串 749
  • 14.6.2 为shell建立安全的字符串 751
  • 14.6.3 嵌入注释 751
  • 14.6.4 将字符串分解为token 752
  • 14.6.5 包含其他token源 752
  • 14.6.6 控制解析器 753
  • 14.6.7 错误处理 755
  • 14.6.8 POSIX与非POSIX解析 756
  • 14.7 configparser:处理配置文件 757
  • 14.7.1 配置文件格式 757
  • 14.7.2 读取配置文件 758
  • 14.7.3 访问配置设置 759
  • 14.7.4 修改设置 765
  • 14.7.5 保存配置文件 766
  • 14.7.6 选项搜索路径 767
  • 14.7.7 用拼接合并值 768
  • 14.8 logging:报告状态、错误和信息消息 772
  • 14.8.1 日志系统的组成 773
  • 14.8.2 应用与库中的日志记录 773
  • 14.8.3 记入文件 773
  • 14.8.4 旋转日志文件 774
  • 14.8.5 详细级别 774
  • 14.8.6 命名日志记录器实例 776
  • 14.8.7 日志树 776
  • 14.8.8 与warnings模块集成 777
  • 14.9 fileinput:命令行过滤器框架 778
  • 14.9.1 将m3u文件转换为RSS 778
  • 14.9.2 进度元数据 779
  • 14.9.3 原地过滤 781
  • 14.10 atexit:程序关闭回调 782
  • 14.10.1 注册退出回调 782
  • 14.10.2 修饰符语法 783
  • 14.10.3 撤销回调 784
  • 14.10.4 什么情况下不调用atexit函数 785
  • 14.10.5 处理异常 786
  • 14.11 sched:定时事件调度器 787
  • 14.11.1 有延迟地运行事件 788
  • 14.11.2 重叠事件 788
  • 14.11.3 事件优先级 789
  • 14.11.4 取消事件 790
  • 第 15 章 国际化和本地化 791
  • 15.1 gettext:消息编目 791
  • 15.1.1 转换工作流概述 791
  • 15.1.2 由源代码创建消息编目 792
  • 15.1.3 运行时查找消息编目 794
  • 15.1.4 复数值 795
  • 15.1.5 应用与模块本地化 797
  • 15.1.6 切换转换 798
  • 15.2 locale:文化本地化API 798
  • 15.2.1 探查当前本地化环境 799
  • 15.2.2 货币 803
  • 15.2.3 格式化数字 804
  • 15.2.4 解析数字 805
  • 15.2.5 日期和时间 806
  • 第 16 章 开发工具 807
  • 16.1 pydoc:模块的联机帮助 808
  • 16.1.1 纯文本帮助 808
  • 16.1.2 HTML帮助 809
  • 16.1.3 交互式帮助 809
  • 16.2 doctest:通过文档完成测试 810
  • 16.2.1 起步 810
  • 16.2.2 处理不可预测的输出 811
  • 16.2.3 traceback 814
  • 16.2.4 避开空白符 815
  • 16.2.5 测试位置 819
  • 16.2.6 外部文档 822
  • 16.2.7 运行测试 824
  • 16.2.8 测试上下文 827
  • 16.3 unittest:自动测试框架 829
  • 16.3.1 基本测试结构 829
  • 16.3.2 运行测试 829
  • 16.3.3 测试结果 830
  • 16.3.4 断言真值 831
  • 16.3.5 测试相等性 832
  • 16.3.6 几乎相等? 833
  • 16.3.7 容器 833
  • 16.3.8 测试异常 837
  • 16.3.9 测试固件 838
  • 16.3.10 用不同输入重复测试 840
  • 16.3.11 跳过测试 842
  • 16.3.12 忽略失败测试 842
  • 16.4 trace:执行程序流 843
  • 16.4.1 示例程序 843
  • 16.4.2 跟踪执行 844
  • 16.4.3 代码覆盖 845
  • 16.4.4 调用关系 847
  • 16.4.5 编程接口 848
  • 16.4.6 保存结果数据 849
  • 16.4.7 选项 850
  • 16.5 traceback:异常和栈轨迹 850
  • 16.5.1 支持函数 851
  • 16.5.2 检查栈 851
  • 16.5.3 traceback异常 853
  • 16.5.4 底层异常API 854
  • 16.5.5 底层栈API 857
  • 16.6 cgitb:详细的traceback报告 859
  • 16.6.1 标准traceback转储 859
  • 16.6.2 启用详细的traceback 860
  • 16.6.3 traceback中的局部变量 862
  • 16.6.4 异常属性 864
  • 16.6.5 HTML输出 866
  • 16.6.6 记录traceback 866
  • 16.7 pdb:交互式调试工具 868
  • 16.7.1 启动调试工具 869
  • 16.7.2 控制调试工具 871
  • 16.7.3 断点 881
  • 16.7.4 改变执行流 890
  • 16.7.5 用别名定制调试工具 895
  • 16.7.6 保存配置设置 897
  • 16.8 profile和pstats:性能分析 898
  • 16.8.1 运行性能分析工具 898
  • 16.8.2 在上下文中运行 901
  • 16.8.3 pstats:保存和处理统计信息 901
  • 16.8.4 限制报告内容 903
  • 16.8.5 调用者/被调用者图 903
  • 16.9 timeit:测量小段Python代码执行的时间 905
  • 16.9.1 模块内容 905
  • 16.9.2 基本示例 905
  • 16.9.3 将值存储在字典中 906
  • 16.9.4 从命令行执行 908
  • 16.10 tabnanny:缩进验证工具 909
  • 16.11 compileall:字节编译源文件 910
  • 16.11.1 编译一个目录 910
  • 16.11.2 忽略文件 911
  • 16.11.3 编译sys.path 912
  • 16.11.4 编译单个文件 912
  • 16.11.5 从命令行运行 913
  • 16.12 pyclbr:类浏览器 914
  • 16.12.1 扫描类 915
  • 16.12.2 扫描函数 916
  • 16.13 venv:创建虚拟环境 917
  • 16.13.1 创建环境 917
  • 16.13.2 虚拟环境的内容 917
  • 16.13.3 使用虚拟环境 918
  • 16.14 ensurepip:安装Python包安装工具 920
  • 第 17 章 运行时特性 922
  • 17.1 site:全站点配置 922
  • 17.1.1 导入路径 922
  • 17.1.2 用户目录 923
  • 17.1.3 路径配置文件 924
  • 17.1.4 定制站点配置 926
  • 17.1.5 定制用户配置 927
  • 17.1.6 禁用site模块 929
  • 17.2 sys:系统特定配置 929
  • 17.2.1 解释器设置 929
  • 17.2.2 运行时环境 935
  • 17.2.3 内存管理和限制 937
  • 17.2.4 异常处理 942
  • 17.2.5 底层线程支持 944
  • 17.2.6 模块和导入 947
  • 17.2.7 跟踪程序运行情况 963
  • 17.3 os:可移植访问操作系统特定特性 968
  • 17.3.1 检查文件系统内容 968
  • 17.3.2 管理文件系统权限 971
  • 17.3.3 创建和删除目录 973
  • 17.3.4 处理符号链接 973
  • 17.3.5 安全地替换现有文件 974
  • 17.3.6 检测和改变进程所有者 975
  • 17.3.7 管理进程环境 976
  • 17.3.8 管理进程工作目录 977
  • 17.3.9 运行外部命令 977
  • 17.3.10 用os.fork()创建进程 979
  • 17.3.11 等待子进程 980
  • 17.3.12 Spawn创建新进程 982
  • 17.3.13 操作系统错误码 982
  • 17.4 platform:系统版本信息 983
  • 17.4.1 解释器 983
  • 17.4.2 平台 984
  • 17.4.3 操作系统和硬件信息 985
  • 17.4.4 可执行程序体系结构 986
  • 17.5 resource:系统资源管理 987
  • 17.5.1 当前使用情况 987
  • 17.5.2 资源限制 988
  • 17.6 gc:垃圾回收器 990
  • 17.6.1 跟踪引用 990
  • 17.6.2 强制垃圾回收 992
  • 17.6.3 查找无法回收的对象引用 993
  • 17.6.4 回收阈值和代 995
  • 17.6.5 调试 998
  • 17.7 sysconfig:解释器编译时配置 1002
  • 17.7.1 配置变量 1002
  • 17.7.2 安装路径 1004
  • 17.7.3 Python版本和平台 1007
  • 第 18 章 语言工具 1009
  • 18.1 warnings:非致命警告 1009
  • 18.1.1 分类和过滤 1010
  • 18.1.2 生成警告 1010
  • 18.1.3 用模式过滤 1011
  • 18.1.4 重复的警告 1013
  • 18.1.5 候选消息传送函数 1013
  • 18.1.6 格式化 1014
  • 18.1.7 警告中的栈层次 1014
  • 18.2 abc:抽象基类 1015
  • 18.2.1 ABC如何工作 1015
  • 18.2.2 注册一个具体类 1016
  • 18.2.3 通过派生实现 1017
  • 18.2.4 辅助基类 1017
  • 18.2.5 不完整的实现 1018
  • 18.2.6 ABC中的具体方法 1019
  • 18.2.7 抽象属性 1020
  • 18.2.8 抽象类和静态方法 1022
  • 18.3 dis:Python字节码反汇编工具 1023
  • 18.3.1 基本反汇编 1023
  • 18.3.2 反汇编函数 1024
  • 18.3.3 类 1025
  • 18.3.4 源代码 1026
  • 18.3.5 使用反汇编调试 1027
  • 18.3.6 循环的性能分析 1028
  • 18.3.7 编译器优化 1033
  • 18.4 inspect:检查现场对象 1035
  • 18.4.1 示例模块 1035
  • 18.4.2 检查模块 1035
  • 18.4.3 检查类 1036
  • 18.4.4 检查实例 1038
  • 18.4.5 文档串 1038
  • 18.4.6 获取源代码 1039
  • 18.4.7 方法和函数签名 1041
  • 18.4.8 类层次体系 1043
  • 18.4.9 方法解析顺序 1044
  • 18.4.10 栈与帧 1045
  • 18.4.11 命令行接口 1047
  • 第 19 章 模块和包 1048
  • 19.1 importlib:Python的导入机制 1048
  • 19.1.1 示例包 1048
  • 19.1.2 模块类型 1049
  • 19.1.3 导入模块 1049
  • 19.1.4 加载工具 1051
  • 19.2 pkgutil:包工具 1052
  • 19.2.1 包导入路径 1052
  • 19.2.2 包的开发版本 1054
  • 19.2.3 用PKG文件管理路径 1055
  • 19.2.4 嵌套包 1056
  • 19.2.5 包数据 1058
  • 19.3 zipimport:从ZIP归档加载Python代码 1060
  • 19.3.1 示例 1060
  • 19.3.2 查找模块 1061
  • 19.3.3 访问代码 1061
  • 19.3.4 源代码 1062
  • 19.3.5 包 1063
  • 19.3.6 数据 1063
  • 附录A 移植说明 1066
  • 附录B 标准库之外 1081

English Version

Table of Contents

展开查看

  • Chapter 1 Text 1
  • 1.1 string: Text Constants and Templates 1
  • 1.1.1 Functions 1
  • 1.1.2 Templates 2
  • 1.1.3 Advanced Templates 4
  • 1.1.4 Formatter 6
  • 1.1.5 Constants 6
  • 1.2 textwrap: Formatting Text Paragraphs 7
  • 1.2.1 Example Data 8
  • 1.2.2 Filling Paragraphs 8
  • 1.2.3 Removing Existing Indentation 8
  • 1.2.4 Combining Dedent and Fill 9
  • 1.2.5 Indenting Blocks 10
  • 1.2.6 Hanging Indents 12
  • 1.2.7 Truncating Long Text 12
  • 1.3 re: Regular Expressions 13
  • 1.3.1 Finding Patterns in Text 14
  • 1.3.2 Compiling Expressions 15
  • 1.3.3 Multiple Matches 16
  • 1.3.4 Pattern Syntax 17
  • 1.3.5 Constraining the Search 28
  • 1.3.6 Dissecting Matches with Groups 30
  • 1.3.7 Search Options 36
  • 1.3.8 Looking Ahead or Behind 44
  • 1.3.9 Self-referencing Expressions 48
  • 1.3.10 Modifying Strings with Patterns 53
  • 1.3.11 Splitting with Patterns 55
  • 1.4 difflib: Compare Sequences 58
  • 1.4.1 Comparing Bodies of Text 58
  • 1.4.2 Junk Data 61
  • 1.4.3 Comparing Arbitrary Types 62
  • ixx Contents
  • Chapter 2 Data Structures 65
  • 2.1 enum: Enumeration Type 66
  • 2.1.1 Creating Enumerations 66
  • 2.1.2 Iteration 67
  • 2.1.3 Comparing Enums 67
  • 2.1.4 Unique Enumeration Values 69
  • 2.1.5 Creating Enumerations Programmatically 71
  • 2.1.6 Non-integer Member Values 72
  • 2.2 collections: Container Data Types 75
  • 2.2.1 ChainMap: Search Multiple Dictionaries 75
  • 2.2.2 Counter: Count Hashable Objects 79
  • 2.2.3 defaultdict: Missing Keys Return a Default Value 83
  • 2.2.4 deque: Double-Ended Queue 84
  • 2.2.5 namedtuple: Tuple Subclass with Named Fields 89
  • 2.2.6 OrderedDict: Remember the Order Keys Are Added to a Dictionary 94
  • 2.2.7 collections.abc: Abstract Base Classes for Containers 97
  • 2.3 array: Sequence of Fixed-Type Data 98
  • 2.3.1 Initialization 98
  • 2.3.2 Manipulating Arrays 99
  • 2.3.3 Arrays and Files 100
  • 2.3.4 Alternative Byte Ordering 101
  • 2.4 heapq: Heap Sort Algorithm 103
  • 2.4.1 Example Data 103
  • 2.4.2 Creating a Heap 104
  • 2.4.3 Accessing the Contents of a Heap 105
  • 2.4.4 Data Extremes from a Heap 107
  • 2.4.5 Efficiently Merging Sorted Sequences 108
  • 2.5 bisect: Maintain Lists in Sorted Order 109
  • 2.5.1 Inserting in Sorted Order 109
  • 2.5.2 Handling Duplicates 110
  • 2.6 queue: Thread-Safe FIFO Implementation 111
  • 2.6.1 Basic FIFO Queue 112
  • 2.6.2 LIFO Queue 112
  • 2.6.3 Priority Queue 113
  • 2.6.4 Building a Threaded Podcast Client 114
  • 2.7 struct: Binary Data Structures 117
  • 2.7.1 Functions Versus Struct Class 117
  • 2.7.2 Packing and Unpacking 117
  • 2.7.3 Endianness 118
  • 2.7.4 Buffers 120
  • 2.8 weakref: Impermanent References to Objects 121
  • 2.8.1 References 122
  • 2.8.2 Reference Callbacks 122
  • 2.8.3 Finalizing Objects 123
  • 2.8.4 Proxies 126
  • 2.8.5 Caching Objects 127Contents xi
  • 2.9 copy: Duplicate Objects 130
  • 2.9.1 Shallow Copies 130
  • 2.9.2 Deep Copies 131
  • 2.9.3 Customizing Copy Behavior 132
  • 2.9.4 Recursion in Deep Copy 133
  • 2.10 pprint: Pretty-Print Data Structures 136
  • 2.10.1 Printing 136
  • 2.10.2 Formatting 137
  • 2.10.3 Arbitrary Classes 138
  • 2.10.4 Recursion 139
  • 2.10.5 Limiting Nested Output 139
  • 2.10.6 Controlling Output Width 140
  • Chapter 3 Algorithms 143
  • 3.1 functools: Tools for Manipulating Functions 143
  • 3.1.1 Decorators 143
  • 3.1.2 Comparison 151
  • 3.1.3 Caching 155
  • 3.1.4 Reducing a Data Set 158
  • 3.1.5 Generic Functions 161
  • 3.2 itertools: Iterator Functions 163
  • 3.2.1 Merging and Splitting Iterators 164
  • 3.2.2 Converting Inputs 167
  • 3.2.3 Producing New Values 169
  • 3.2.4 Filtering 172
  • 3.2.5 Grouping Data 175
  • 3.2.6 Combining Inputs 176
  • 3.3 operator: Functional Interface to Built-in Operators 183
  • 3.3.1 Logical Operations 183
  • 3.3.2 Comparison Operators 184
  • 3.3.3 Arithmetic Operators 184
  • 3.3.4 Sequence Operators 186
  • 3.3.5 In-Place Operators 187
  • 3.3.6 Attribute and Item “Getters” 188
  • 3.3.7 Combining Operators and Custom Classes 190
  • 3.4 contextlib: Context Manager Utilities 191
  • 3.4.1 Context Manager API 191
  • 3.4.2 Context Managers as Function Decorators 194
  • 3.4.3 From Generator to Context Manager 196
  • 3.4.4 Closing Open Handles 198
  • 3.4.5 Ignoring Exceptions 199
  • 3.4.6 Redirecting Output Streams 201
  • 3.4.7 Dynamic Context Manager Stacks 202xii Contents
  • Chapter 4 Dates and Times 211
  • 4.1 time: Clock Time 211
  • 4.1.1 Comparing Clocks 211
  • 4.1.2 Wall Clock Time 213
  • 4.1.3 Monotonic Clocks 214
  • 4.1.4 Processor Clock Time 214
  • 4.1.5 Performance Counter 216
  • 4.1.6 Time Components 217
  • 4.1.7 Working with Time Zones 218
  • 4.1.8 Parsing and Formatting Times 219
  • 4.2 datetime: Date and Time Value Manipulation 221
  • 4.2.1 Times 221
  • 4.2.2 Dates 222
  • 4.2.3 timedeltas 225
  • 4.2.4 Date Arithmetic 226
  • 4.2.5 Comparing Values 228
  • 4.2.6 Combining Dates and Times 228
  • 4.2.7 Formatting and Parsing 230
  • 4.2.8 Time Zones 231
  • 4.3 calendar: Work with Dates 233
  • 4.3.1 Formatting Examples 233
  • 4.3.2 Locales 236
  • 4.3.3 Calculating Dates 236
  • Chapter 5 Mathematics 239
  • 5.1 decimal: Fixed- and Floating-Point Math 239
  • 5.1.1 Decimal 239
  • 5.1.2 Formatting 241
  • 5.1.3 Arithmetic 242
  • 5.1.4 Special Values 243
  • 5.1.5 Context 244
  • 5.2 fractions: Rational Numbers 250
  • 5.2.1 Creating Fraction Instances 250
  • 5.2.2 Arithmetic 252
  • 5.2.3 Approximating Values 253
  • 5.3 random: Pseudorandom Number Generators 254
  • 5.3.1 Generating Random Numbers 254
  • 5.3.2 Seeding 255
  • 5.3.3 Saving State 255
  • 5.3.4 Random Integers 257
  • 5.3.5 Picking Random Items 258
  • 5.3.6 Permutations 258
  • 5.3.7 Sampling 260
  • 5.3.8 Multiple Simultaneous Generators 261
  • 5.3.9 SystemRandom 262
  • 5.3.10 Non-uniform Distributions 263Contents xiii
  • 5.4 math: Mathematical Functions 264
  • 5.4.1 Special Constants 265
  • 5.4.2 Testing for Exceptional Values 265
  • 5.4.3 Comparing 267
  • 5.4.4 Converting Floating-Point Values to Integers 270
  • 5.4.5 Alternative Representations of Floating-Point Values 271
  • 5.4.6 Positive and Negative Signs 272
  • 5.4.7 Commonly Used Calculations 274
  • 5.4.8 Exponents and Logarithms 278
  • 5.4.9 Angles 282
  • 5.4.10 Trigonometry 284
  • 5.4.11 Hyperbolic Functions 288
  • 5.4.12 Special Functions 289
  • 5.5 statistics: Statistical Calculations 290
  • 5.5.1 Averages 290
  • 5.5.2 Variance 292
  • Chapter 6 The File System 295
  • 6.1 os.path: Platform-Independent Manipulation of Filenames 296
  • 6.1.1 Parsing Paths 296
  • 6.1.2 Building Paths 300
  • 6.1.3 Normalizing Paths 301
  • 6.1.4 File Times 302
  • 6.1.5 Testing Files 303
  • 6.2 pathlib: File System Paths as Objects 305
  • 6.2.1 Path Representations 305
  • 6.2.2 Building Paths 305
  • 6.2.3 Parsing Paths 307
  • 6.2.4 Creating Concrete Paths 309
  • 6.2.5 Directory Contents 309
  • 6.2.6 Reading and Writing Files 312
  • 6.2.7 Manipulating Directories and Symbolic Links 312
  • 6.2.8 File Types 313
  • 6.2.9 File Properties 315
  • 6.2.10 Permissions 317
  • 6.2.11 Deleting 318
  • 6.3 glob: Filename Pattern Matching 319
  • 6.3.1 Example Data 320
  • 6.3.2 Wildcards 320
  • 6.3.3 Single-Character Wildcard 321
  • 6.3.4 Character Ranges 322
  • 6.3.5 Escaping Meta-characters 322
  • 6.4 fnmatch: Unix-Style Glob Pattern Matching 323
  • 6.4.1 Simple Matching 323
  • 6.4.2 Filtering 325
  • 6.4.3 Translating Patterns 325xiv Contents
  • 6.5 linecache: Read Text Files Efficiently 326
  • 6.5.1 Test Data 326
  • 6.5.2 Reading Specific Lines 327
  • 6.5.3 Handling Blank Lines 328
  • 6.5.4 Error Handling 328
  • 6.5.5 Reading Python Source Files 329
  • 6.6 tempfile: Temporary File System Objects 330
  • 6.6.1 Temporary Files 331
  • 6.6.2 Named Files 333
  • 6.6.3 Spooled Files 333
  • 6.6.4 Temporary Directories 335
  • 6.6.5 Predicting Names 335
  • 6.6.6 Temporary File Location 336
  • 6.7 shutil: High-Level File Operations 337
  • 6.7.1 Copying Files 337
  • 6.7.2 Copying File Metadata 340
  • 6.7.3 Working with Directory Trees 342
  • 6.7.4 Finding Files 345
  • 6.7.5 Archives 346
  • 6.7.6 File System Space 350
  • 6.8 filecmp: Compare Files 351
  • 6.8.1 Example Data 351
  • 6.8.2 Comparing Files 353
  • 6.8.3 Comparing Directories 355
  • 6.8.4 Using Differences in a Program 357
  • 6.9 mmap: Memory-Map Files 361
  • 6.9.1 Reading 361
  • 6.9.2 Writing 362
  • 6.9.3 Regular Expressions 364
  • 6.10 codecs: String Encoding and Decoding 365
  • 6.10.1 Unicode Primer 365
  • 6.10.2 Working with Files 368
  • 6.10.3 Byte Order 370
  • 6.10.4 Error Handling 372
  • 6.10.5 Encoding Translation 376
  • 6.10.6 Non-Unicode Encodings 377
  • 6.10.7 Incremental Encoding 378
  • 6.10.8 Unicode Data and Network Communication 380
  • 6.10.9 Defining a Custom Encoding 383
  • 6.11 io: Text, Binary, and Raw Stream I/O Tools 390
  • 6.11.1 In-Memory Streams 390
  • 6.11.2 Wrapping Byte Streams for Text Data 392Contents xv
  • Chapter 7 Data Persistence and Exchange 395
  • 7.1 pickle: Object Serialization 396
  • 7.1.1 Encoding and Decoding Data in Strings 396
  • 7.1.2 Working with Streams 397
  • 7.1.3 Problems Reconstructing Objects 399
  • 7.1.4 Unpicklable Objects 400
  • 7.1.5 Circular References 402
  • 7.2 shelve: Persistent Storage of Objects 405
  • 7.2.1 Creating a New Shelf 405
  • 7.2.2 Writeback 406
  • 7.2.3 Specific Shelf Types 408
  • 7.3 dbm: Unix Key–Value Databases 408
  • 7.3.1 Database Types 408
  • 7.3.2 Creating a New Database 409
  • 7.3.3 Opening an Existing Database 410
  • 7.3.4 Error Cases 411
  • 7.4 sqlite3: Embedded Relational Database 412
  • 7.4.1 Creating a Database 412
  • 7.4.2 Retrieving Data 415
  • 7.4.3 Query Metadata 417
  • 7.4.4 Row Objects 417
  • 7.4.5 Using Variables with Queries 419
  • 7.4.6 Bulk Loading 421
  • 7.4.7 Defining New Column Types 422
  • 7.4.8 Determining Types for Columns 426
  • 7.4.9 Transactions 428
  • 7.4.10 Isolation Levels 431
  • 7.4.11 In-Memory Databases 434
  • 7.4.12 Exporting the Contents of a Database 435
  • 7.4.13 Using Python Functions in SQL 436
  • 7.4.14 Querying with Regular Expressions 439
  • 7.4.15 Custom Aggregation 440
  • 7.4.16 Threading and Connection Sharing 441
  • 7.4.17 Restricting Access to Data 442
  • 7.5 xml.etree.ElementTree: XML Manipulation API 445
  • 7.5.1 Parsing an XML Document 445
  • 7.5.2 Traversing the Parsed Tree 446
  • 7.5.3 Finding Nodes in a Document 447
  • 7.5.4 Parsed Node Attributes 449
  • 7.5.5 Watching Events While Parsing 451
  • 7.5.6 Creating a Custom Tree Builder 453
  • 7.5.7 Parsing Strings 455
  • 7.5.8 Building Documents With Element Nodes 457
  • 7.5.9 Pretty-Printing XML 458
  • 7.5.10 Setting Element Properties 459xvi Contents
  • 7.5.11 Building Trees from Lists of Nodes 461
  • 7.5.12 Serializing XML to a Stream 464
  • 7.6 csv: Comma-Separated Value Files 466
  • 7.6.1 Reading 466
  • 7.6.2 Writing 467
  • 7.6.3 Dialects 469
  • 7.6.4 Using Field Names 474
  • Chapter 8 Data Compression and Archiving 477
  • 8.1 zlib: GNU zlib Compression 477
  • 8.1.1 Working with Data in Memory 477
  • 8.1.2 Incremental Compression and Decompression 479
  • 8.1.3 Mixed Content Streams 480
  • 8.1.4 Checksums 481
  • 8.1.5 Compressing Network Data 482
  • 8.2 gzip: Read and Write GNU zip Files 486
  • 8.2.1 Writing Compressed Files 486
  • 8.2.2 Reading Compressed Data 489
  • 8.2.3 Working with Streams 490
  • 8.3 bz2: bzip2 Compression 491
  • 8.3.1 One-Shot Operations in Memory 492
  • 8.3.2 Incremental Compression and Decompression 493
  • 8.3.3 Mixed-Content Streams 494
  • 8.3.4 Writing Compressed Files 495
  • 8.3.5 Reading Compressed Files 497
  • 8.3.6 Reading and Writing Unicode Data 498
  • 8.3.7 Compressing Network Data 499
  • 8.4 tarfile: Tar Archive Access 503
  • 8.4.1 Testing Tar Files 503
  • 8.4.2 Reading Metadata from an Archive 504
  • 8.4.3 Extracting Files from an Archive 506
  • 8.4.4 Creating New Archives 508
  • 8.4.5 Using Alternative Archive Member Names 508
  • 8.4.6 Writing Data from Sources Other Than Files 509
  • 8.4.7 Appending to Archives 510
  • 8.4.8 Working with Compressed Archives 510
  • 8.5 zipfile: ZIP Archive Access 511
  • 8.5.1 Testing ZIP Files 512
  • 8.5.2 Reading Metadata from an Archive 512
  • 8.5.3 Extracting Archived Files From an Archive 514
  • 8.5.4 Creating New Archives 514
  • 8.5.5 Using Alternative Archive Member Names 516
  • 8.5.6 Writing Data from Sources Other Than Files 517
  • 8.5.7 Writing with a ZipInfo Instance 517
  • 8.5.8 Appending to Files 518Contents xvii
  • 8.5.9 Python ZIP Archives 519
  • 8.5.10 Limitations 521
  • Chapter 9 Cryptography 523
  • 9.1 hashlib: Cryptographic Hashing 523
  • 9.1.1 Hash Algorithms 523
  • 9.1.2 Sample Data 524
  • 9.1.3 MD5 Example 524
  • 9.1.4 SHA1 Example 525
  • 9.1.5 Creating a Hash by Name 525
  • 9.1.6 Incremental Updates 526
  • 9.2 hmac: Cryptographic Message Signing and Verification 528
  • 9.2.1 Signing Messages 528
  • 9.2.2 Alternative Digest Types 528
  • 9.2.3 Binary Digests 529
  • 9.2.4 Applications of Message Signatures 530
  • Chapter 10 Concurrency with Processes, Threads, and Coroutines 535
  • 10.1 subprocess: Spawning Additional Processes 535
  • 10.1.1 Running External Command 536
  • 10.1.2 Working with Pipes Directly 542
  • 10.1.3 Connecting Segments of a Pipe 545
  • 10.1.4 Interacting with Another Command 546
  • 10.1.5 Signaling Between Processes 548
  • 10.2 signal: Asynchronous System Events 553
  • 10.2.1 Receiving Signals 554
  • 10.2.2 Retrieving Registered Handlers 555
  • 10.2.3 Sending Signals 556
  • 10.2.4 Alarms 556
  • 10.2.5 Ignoring Signals 557
  • 10.2.6 Signals and Threads 558
  • 10.3 threading: Manage Concurrent Operations Within a Process 560
  • 10.3.1 Thread Objects 560
  • 10.3.2 Determining the Current Thread 562
  • 10.3.3 Daemon Versus Non-daemon Threads 564
  • 10.3.4 Enumerating All Threads 567
  • 10.3.5 Subclassing Thread 568
  • 10.3.6 Timer Threads 570
  • 10.3.7 Signaling Between Threads 571
  • 10.3.8 Controlling Access to Resources 572
  • 10.3.9 Synchronizing Threads 578
  • 10.3.10 Limiting Concurrent Access to Resources 581
  • 10.3.11 Thread Specific Data 583
  • 10.4 multiprocessing: Manage Processes Like Threads 586
  • 10.4.1 multiprocessing Basics 586
  • 10.4.2 Importable Target Functions 587xviii Contents
  • 10.4.3 Determining the Current Process 588
  • 10.4.4 Daemon Processes 589
  • 10.4.5 Waiting for Processes 591
  • 10.4.6 Terminating Processes 593
  • 10.4.7 Process Exit Status 594
  • 10.4.8 Logging 596
  • 10.4.9 Subclassing Process 597
  • 10.4.10 Passing Messages to Processes 598
  • 10.4.11 Signaling Between Processes 602
  • 10.4.12 Controlling Access to Resources 603
  • 10.4.13 Synchronizing Operations 604
  • 10.4.14 Controlling Concurrent Access to Resources 605
  • 10.4.15 Managing Shared State 608
  • 10.4.16 Shared Namespaces 608
  • 10.4.17 Process Pools 611
  • 10.4.18 Implementing MapReduce 613
  • 10.5 asyncio: Asynchronous I/O, Event Loop, and Concurrency Tools 617
  • 10.5.1 Asynchronous Concurrency Concepts 618
  • 10.5.2 Cooperative Multitasking with Coroutines 618
  • 10.5.3 Scheduling Calls to Regular Functions 622
  • 10.5.4 Producing Results Asynchronously 625
  • 10.5.5 Executing Tasks Concurrently 628
  • 10.5.6 Composing Coroutines with Control Structures 632
  • 10.5.7 Synchronization Primitives 637
  • 10.5.8 Asynchronous I/O with Protocol Class Abstractions 644
  • 10.5.9 Asynchronous I/O Using Coroutines and Streams 650
  • 10.5.10 Using SSL 656
  • 10.5.11 Interacting with Domain Name Services 658
  • 10.5.12 Working with Subprocesses 661
  • 10.5.13 Receiving Unix Signals 668
  • 10.5.14 Combining Coroutines with Threads and Processes 670
  • 10.5.15 Debugging with asyncio 673
  • 10.6 concurrent.futures: Manage Pools of Concurrent Tasks 677
  • 10.6.1 Using map() with a Basic Thread Pool 677
  • 10.6.2 Scheduling Individual Tasks 678
  • 10.6.3 Waiting for Tasks in Any Order 679
  • 10.6.4 Future Callbacks 680
  • 10.6.5 Canceling Tasks 681
  • 10.6.6 Exceptions in Tasks 683
  • 10.6.7 Context Manager 683
  • 10.6.8 Process Pools 684Contents xix
  • Chapter 11 Networking 687
  • 11.1 ipaddress: Internet Addresses 687
  • 11.1.1 Addresses 687
  • 11.1.2 Networks 688
  • 11.1.3 Interfaces 692
  • 11.2 socket: Network Communication 693
  • 11.2.1 Addressing, Protocol Families, and Socket Types 693
  • 11.2.2 TCP/IP Client and Server 704
  • 11.2.3 User Datagram Client and Server 711
  • 11.2.4 Unix Domain Sockets 714
  • 11.2.5 Multicast 717
  • 11.2.6 Sending Binary Data 721
  • 11.2.7 Non-blocking Communication and Timeouts 723
  • 11.3 selectors: I/O Multiplexing Abstractions 724
  • 11.3.1 Operating Model 724
  • 11.3.2 Echo Server 724
  • 11.3.3 Echo Client 726
  • 11.3.4 Server and Client Together 727
  • 11.4 select: Wait for I/O Efficiently 728
  • 11.4.1 Using select() 729
  • 11.4.2 Non-blocking I/O with Timeouts 734
  • 11.4.3 Using poll() 737
  • 11.4.4 Platform-Specific Options 742
  • 11.5 socketserver: Creating Network Servers 742
  • 11.5.1 Server Types 742
  • 11.5.2 Server Objects 743
  • 11.5.3 Implementing a Server 743
  • 11.5.4 Request Handlers 743
  • 11.5.5 Echo Example 744
  • 11.5.6 Threading and Forking 749
  • Chapter 12 The Internet 753
  • 12.1 urllib.parse: Split URLs into Components 753
  • 12.1.1 Parsing 754
  • 12.1.2 Unparsing 756
  • 12.1.3 Joining 758
  • 12.1.4 Encoding Query Arguments 759
  • 12.2 urllib.request: Network Resource Access 761
  • 12.2.1 HTTP GET 761
  • 12.2.2 Encoding Arguments 763
  • 12.2.3 HTTP POST 764
  • 12.2.4 Adding Outgoing Headers 765
  • 12.2.5 Posting Form Data from a Request 766
  • 12.2.6 Uploading Files 767
  • 12.2.7 Creating Custom Protocol Handlers 770xx Contents
  • 12.3 urllib.robotparser: Internet Spider Access Control 773
  • 12.3.1 robots.txt 773
  • 12.3.2 Testing Access Permissions 774
  • 12.3.3 Long-Lived Spiders 775
  • 12.4 base64: Encode Binary Data with ASCII 776
  • 12.4.1 Base 64 Encoding 777
  • 12.4.2 Base64 Decoding 778
  • 12.4.3 URL-Safe Variations 778
  • 12.4.4 Other Encodings 779
  • 12.5 http.server: Base Classes for Implementing Web Servers 781
  • 12.5.1 HTTP GET 781
  • 12.5.2 HTTP POST 784
  • 12.5.3 Threading and Forking 786
  • 12.5.4 Handling Errors 787
  • 12.5.5 Setting Headers 788
  • 12.5.6 Command-Line Use 789
  • 12.6 http.cookies: HTTP Cookies 790
  • 12.6.1 Creating and Setting a Cookie 790
  • 12.6.2 Morsels 791
  • 12.6.3 Encoded Values 793
  • 12.6.4 Receiving and Parsing Cookie Headers 794
  • 12.6.5 Alternative Output Formats 795
  • 12.7 webbrowser: Displays Web Pages 796
  • 12.7.1 Simple Example 796
  • 12.7.2 Windows Versus Tabs 796
  • 12.7.3 Using a Specific Browser 796
  • 12.7.4 BROWSER Variable 797
  • 12.7.5 Command-Line Interface 797
  • 12.8 uuid: Universally Unique Identifiers 797
  • 12.8.1 UUID 1: IEEE 802 MAC Address 798
  • 12.8.2 UUID 3 and 5: Name-Based Values 800
  • 12.8.3 UUID 4: Random Values 802
  • 12.8.4 Working with UUID Objects 802
  • 12.9 json: JavaScript Object Notation 803
  • 12.9.1 Encoding and Decoding Simple Data Types 804
  • 12.9.2 Human-Consumable Versus Compact Output 805
  • 12.9.3 Encoding Dictionaries 807
  • 12.9.4 Working with Custom Types 807
  • 12.9.5 Encoder and Decoder Classes 810
  • 12.9.6 Working with Streams and Files 813
  • 12.9.7 Mixed Data Streams 813
  • 12.9.8 JSON at the Command Line 815
  • 12.10 xmlrpc.client: Client Library for XML-RPC 816
  • 12.10.1 Connecting to a Server 817
  • 12.10.2 Data Types 819Contents xxi
  • 12.10.3 Passing Objects 822
  • 12.10.4 Binary Data 823
  • 12.10.5 Exception Handling 825
  • 12.10.6 Combining Calls into One Message 826
  • 12.11 xmlrpc.server: An XML-RPC Server 827
  • 12.11.1 A Simple Server 828
  • 12.11.2 Alternate API Names 829
  • 12.11.3 Dotted API Names 830
  • 12.11.4 Arbitrary API Names 831
  • 12.11.5 Exposing Methods of Objects 832
  • 12.11.6 Dispatching Calls 834
  • 12.11.7 Introspection API 837
  • Chapter 13 Email 841
  • 13.1 smtplib: Simple Mail Transfer Protocol Client 841
  • 13.1.1 Sending an Email Message 841
  • 13.1.2 Authentication and Encryption 843
  • 13.1.3 Verifying an Email Address 846
  • 13.2 smtpd: Sample Mail Servers 847
  • 13.2.1 Mail Server Base Class 847
  • 13.2.2 Debugging Server 850
  • 13.2.3 Proxy Server 851
  • 13.3 mailbox: Manipulate Email Archives 852
  • 13.3.1 mbox 852
  • 13.3.2 Maildir 855
  • 13.3.3 Message Flags 862
  • 13.3.4 Other Formats 864
  • 13.4 imaplib: IMAP4 Client Library 864
  • 13.4.1 Variations 864
  • 13.4.2 Connecting to a Server 864
  • 13.4.3 Example Configuration 866
  • 13.4.4 Listing Mailboxes 866
  • 13.4.5 Mailbox Status 869
  • 13.4.6 Selecting a Mailbox 871
  • 13.4.7 Searching for Messages 872
  • 13.4.8 Search Criteria 872
  • 13.4.9 Fetching Messages 874
  • 13.4.10 Whole Messages 880
  • 13.4.11 Uploading Messages 881
  • 13.4.12 Moving and Copying Messages 883
  • 13.4.13 Deleting Messages 884xxii Contents
  • Chapter 14 Application Building Blocks 887
  • 14.1 argparse: Command-Line Option and Argument Parsing 888
  • 14.1.1 Setting Up a Parser 888
  • 14.1.2 Defining Arguments 888
  • 14.1.3 Parsing a Command Line 889
  • 14.1.4 Simple Examples 889
  • 14.1.5 Help Output 897
  • 14.1.6 Parser Organization 901
  • 14.1.7 Advanced Argument Processing 908
  • 14.2 getopt: Command-Line Option Parsing 916
  • 14.2.1 Function Arguments 916
  • 14.2.2 Short-Form Options 917
  • 14.2.3 Long-Form Options 917
  • 14.2.4 A Complete Example 918
  • 14.2.5 Abbreviating Long-Form Options 920
  • 14.2.6 GNU-Style Option Parsing 920
  • 14.2.7 Ending Argument Processing 922
  • 14.3 readline: The GNU readline Library 922
  • 14.3.1 Configuring readline 923
  • 14.3.2 Completing Text 924
  • 14.3.3 Accessing the Completion Buffer 927
  • 14.3.4 Input History 931
  • 14.3.5 Hooks 934
  • 14.4 getpass: Secure Password Prompt 935
  • 14.4.1 Example 935
  • 14.4.2 Using getpass Without a Terminal 937
  • 14.5 cmd: Line-Oriented Command Processors 938
  • 14.5.1 Processing Commands 938
  • 14.5.2 Command Arguments 940
  • 14.5.3 Live Help 941
  • 14.5.4 Auto-Completion 942
  • 14.5.5 Overriding Base Class Methods 944
  • 14.5.6 Configuring Cmd Through Attributes 946
  • 14.5.7 Running Shell Commands 947
  • 14.5.8 Alternative Inputs 948
  • 14.5.9 Commands from sys.argv 950
  • 14.6 shlex: Parse Shell-Style Syntaxes 951
  • 14.6.1 Parsing Quoted Strings 951
  • 14.6.2 Making Safe Strings for Shells 953
  • 14.6.3 Embedded Comments 954
  • 14.6.4 Splitting Strings into Tokens 954
  • 14.6.5 Including Other Sources of Tokens 955
  • 14.6.6 Controlling the Parser 956
  • 14.6.7 Error Handling 957
  • 14.6.8 POSIX Versus Non-POSIX Parsing 959Contents xxiii
  • 14.7 configparser: Work with Configuration Files 960
  • 14.7.1 Configuration File Format 961
  • 14.7.2 Reading Configuration Files 961
  • 14.7.3 Accessing Configuration Settings 963
  • 14.7.4 Modifying Settings 970
  • 14.7.5 Saving Configuration Files 972
  • 14.7.6 Option Search Path 972
  • 14.7.7 Combining Values with Interpolation 975
  • 14.8 logging: Report Status, Error, and Informational Messages 980
  • 14.8.1 Logging Components 980
  • 14.8.2 Logging in Applications Versus Libraries 980
  • 14.8.3 Logging to a File 981
  • 14.8.4 Rotating Log Files 981
  • 14.8.5 Verbosity Levels 982
  • 14.8.6 Naming Logger Instances 984
  • 14.8.7 The Logging Tree 984
  • 14.8.8 Integration with the warnings Module 985
  • 14.9 fileinput: Command-Line Filter Framework 986
  • 14.9.1 Converting M3U Files to RSS 987
  • 14.9.2 Progress Metadata 989
  • 14.9.3 In-Place Filtering 990
  • 14.10 atexit: Program Shutdown Callbacks 993
  • 14.10.1 Registering Exit Callbacks 993
  • 14.10.2 Decorator Syntax 994
  • 14.10.3 Canceling Callbacks 994
  • 14.10.4 When Are atexit Callbacks Not Called? 995
  • 14.10.5 Handling Exceptions 997
  • 14.11 sched: Timed Event Scheduler 998
  • 14.11.1 Running Events with a Delay 999
  • 14.11.2 Overlapping Events 1000
  • 14.11.3 Event Priorities 1001
  • 14.11.4 Canceling Events 1001
  • Chapter 15 Internationalization and Localization 1003
  • 15.1 gettext: Message Catalogs 1003
  • 15.1.1 Translation Workflow Overview 1003
  • 15.1.2 Creating Message Catalogs from Source Code 1004
  • 15.1.3 Finding Message Catalogs at Runtime 1007
  • 15.1.4 Plural Values 1008
  • 15.1.5 Application Versus Module Localization 1011
  • 15.1.6 Switching Translations 1012
  • 15.2 locale: Cultural Localization API 1012
  • 15.2.1 Probing the Current Locale 1013
  • 15.2.2 Currency 1018
  • 15.2.3 Formatting Numbers 1019xxiv Contents
  • 15.2.4 Parsing Numbers 1021
  • 15.2.5 Dates and Times 1022
  • Chapter 16 Developer Tools 1023
  • 16.1 pydoc: Online Help for Modules 1024
  • 16.1.1 Plain Text Help 1024
  • 16.1.2 HTML Help 1025
  • 16.1.3 Interactive Help 1026
  • 16.2 doctest: Testing Through Documentation 1026
  • 16.2.1 Getting Started 1026
  • 16.2.2 Handling Unpredictable Output 1028
  • 16.2.3 Tracebacks 1032
  • 16.2.4 Working Around Whitespace 1034
  • 16.2.5 Test Locations 1039
  • 16.2.6 External Documentation 1042
  • 16.2.7 Running Tests 1044
  • 16.2.8 Test Context 1048
  • 16.3 unittest: Automated Testing Framework 1051
  • 16.3.1 Basic Test Structure 1051
  • 16.3.2 Running Tests 1051
  • 16.3.3 Test Outcomes 1052
  • 16.3.4 Asserting Truth 1054
  • 16.3.5 Testing Equality 1054
  • 16.3.6 Almost Equal? 1055
  • 16.3.7 Containers 1056
  • 16.3.8 Testing for Exceptions 1061
  • 16.3.9 Test Fixtures 1062
  • 16.3.10 Repeating Tests with Different Inputs 1065
  • 16.3.11 Skipping Tests 1066
  • 16.3.12 Ignoring Failing Tests 1068
  • 16.4 trace: Follow Program Flow 1069
  • 16.4.1 Example Program 1069
  • 16.4.2 Tracing Execution 1069
  • 16.4.3 Code Coverage 1070
  • 16.4.4 Calling Relationships 1073
  • 16.4.5 Programming Interface 1074
  • 16.4.6 Saving Result Data 1076
  • 16.4.7 Options 1077
  • 16.5 traceback: Exceptions and Stack Traces 1078
  • 16.5.1 Supporting Functions 1079
  • 16.5.2 Examining the Stack 1079
  • 16.5.3 TracebackException 1081
  • 16.5.4 Low-Level Exception APIs 1082
  • 16.5.5 Low-Level Stack APIs 1086Contents xxv
  • 16.6 cgitb: Detailed Traceback Reports 1089
  • 16.6.1 Standard Traceback Dumps 1089
  • 16.6.2 Enabling Detailed Tracebacks 1090
  • 16.6.3 Local Variables in Tracebacks 1093
  • 16.6.4 Exception Properties 1096
  • 16.6.5 HTML Output 1098
  • 16.6.6 Logging Tracebacks 1098
  • 16.7 pdb: Interactive Debugger 1101
  • 16.7.1 Starting the Debugger 1101
  • 16.7.2 Controlling the Debugger 1104
  • 16.7.3 Breakpoints 1117
  • 16.7.4 Changing Execution Flow 1129
  • 16.7.5 Customizing the Debugger with Aliases 1136
  • 16.7.6 Saving Configuration Settings 1137
  • 16.8 profile and pstats: Performance Analysis 1140
  • 16.8.1 Running the Profiler 1140
  • 16.8.2 Running in a Context 1143
  • 16.8.3 pstats: Saving and Working with Statistics 1144
  • 16.8.4 Limiting Report Contents 1145
  • 16.8.5 Caller/Callee Graphs 1146
  • 16.9 timeit: Time the Execution of Small Bits of Python Code 1148
  • 16.9.1 Module Contents 1148
  • 16.9.2 Basic Example 1148
  • 16.9.3 Storing Values in a Dictionary 1149
  • 16.9.4 From the Command Line 1152
  • 16.10 tabnanny: Indentation Validator 1153
  • 16.10.1 Running from the Command Line 1153
  • 16.11 compileall: Byte-Compile Source Files 1155
  • 16.11.1 Compiling One Directory 1155
  • 16.11.2 Ignoring Files 1156
  • 16.11.3 Compiling sys.path 1157
  • 16.11.4 Compiling Individual Files 1157
  • 16.11.5 From the Command Line 1158
  • 16.12 pyclbr: Class Browser 1160
  • 16.12.1 Scanning for Classes 1161
  • 16.12.2 Scanning for Functions 1162
  • 16.13 venv: Create Virtual Environments 1163
  • 16.13.1 Creating Environments 1163
  • 16.13.2 Contents of a Virtual Environment 1164
  • 16.13.3 Using Virtual Environments 1165
  • 16.14 ensurepip: Install the Python Package Installer 1167
  • 16.14.1 Installing pip 1167xxvi Contents
  • Chapter 17 Runtime Features 1169
  • 17.1 site: Site-wide Configuration 1169
  • 17.1.1 Import Path 1169
  • 17.1.2 User Directories 1171
  • 17.1.3 Path Configuration Files 1172
  • 17.1.4 Customizing Site Configuration 1175
  • 17.1.5 Customizing User Configuration 1176
  • 17.1.6 Disabling the site Module 1177
  • 17.2 sys: System-Specific Configuration 1178
  • 17.2.1 Interpreter Settings 1178
  • 17.2.2 Runtime Environment 1185
  • 17.2.3 Memory Management and Limits 1187
  • 17.2.4 Exception Handling 1194
  • 17.2.5 Low-Level Thread Support 1197
  • 17.2.6 Modules and Imports 1200
  • 17.2.7 Tracing a Program As It Runs 1221
  • 17.3 os: Portable Access to Operating System–Specific Features 1227
  • 17.3.1 Examining the File System Contents 1228
  • 17.3.2 Managing File System Permissions 1230
  • 17.3.3 Creating and Deleting Directories 1233
  • 17.3.4 Working with Symbolic Links 1234
  • 17.3.5 Safely Replacing an Existing File 1234
  • 17.3.6 Detecting and Changing the Process Owner 1235
  • 17.3.7 Managing the Process Environment 1237
  • 17.3.8 Managing the Process Working Directory 1238
  • 17.3.9 Running External Commands 1239
  • 17.3.10 Creating Processes with os.fork() 1240
  • 17.3.11 Waiting for Child Processes 1242
  • 17.3.12 Spawning New Processes 1244
  • 17.3.13 Operating System Error Codes 1245
  • 17.4 platform: System Version Information 1246
  • 17.4.1 Interpreter 1246
  • 17.4.2 Platform 1247
  • 17.4.3 Operating System and Hardware Information 1248
  • 17.4.4 Executable Architecture 1250
  • 17.5 resource: System Resource Management 1251
  • 17.5.1 Current Usage 1251
  • 17.5.2 Resource Limits 1252
  • 17.6 gc: Garbage Collector 1254
  • 17.6.1 Tracing References 1255
  • 17.6.2 Forcing Garbage Collection 1258
  • 17.6.3 Finding References to Objects That Cannot Be Collected 1259
  • 17.6.4 Collection Thresholds and Generations 1261
  • 17.6.5 Debugging 1265Contents xxvii
  • 17.7 sysconfig: Interpreter Compile-Time Configuration 1270
  • 17.7.1 Configuration Variables 1270
  • 17.7.2 Installation Paths 1272
  • 17.7.3 Python Version and Platform 1276
  • Chapter 18 Language Tools 1279
  • 18.1 warnings: Non-fatal Alerts 1279
  • 18.1.1 Categories and Filtering 1280
  • 18.1.2 Generating Warnings 1280
  • 18.1.3 Filtering with Patterns 1281
  • 18.1.4 Repeated Warnings 1283
  • 18.1.5 Alternative Message Delivery Functions 1284
  • 18.1.6 Formatting 1285
  • 18.1.7 Stack Level in Warnings 1286
  • 18.2 abc: Abstract Base Classes 1287
  • 18.2.1 How ABCs Work 1287
  • 18.2.2 Registering a Concrete Class 1287
  • 18.2.3 Implementation Through Subclassing 1288
  • 18.2.4 Helper Base Class 1289
  • 18.2.5 Incomplete Implementations 1290
  • 18.2.6 Concrete Methods in ABCs 1291
  • 18.2.7 Abstract Properties 1292
  • 18.2.8 Abstract Class and Static Methods 1295
  • 18.3 dis: Python Byte-Code Disassembler 1296
  • 18.3.1 Basic Disassembly 1297
  • 18.3.2 Disassembling Functions 1297
  • 18.3.3 Classes 1300
  • 18.3.4 Source Code 1301
  • 18.3.5 Using Disassembly to Debug 1302
  • 18.3.6 Performance Analysis of Loops 1303
  • 18.3.7 Compiler Optimizations 1309
  • 18.4 inspect: Inspect Live Objects 1311
  • 18.4.1 Example Module 1311
  • 18.4.2 Inspecting Modules 1312
  • 18.4.3 Inspecting Classes 1314
  • 18.4.4 Inspecting Instances 1316
  • 18.4.5 Documentation Strings 1316
  • 18.4.6 Retrieving Source 1318
  • 18.4.7 Method and Function Signatures 1319
  • 18.4.8 Class Hierarchies 1322
  • 18.4.9 Method Resolution Order 1323
  • 18.4.10 The Stack and Frames 1324
  • 18.4.11 Command-Line Interface 1327xxviii Contents
  • Chapter 19 Modules and Packages 1329
  • 19.1 importlib: Python’s Import Mechanism 1329
  • 19.1.1 Example Package 1329
  • 19.1.2 Module Types 1330
  • 19.1.3 Importing Modules 1331
  • 19.1.4 Loaders 1332
  • 19.2 pkgutil: Package Utilities 1334
  • 19.2.1 Package Import Paths 1334
  • 19.2.2 Development Versions of Packages 1336
  • 19.2.3 Managing Paths with PKG Files 1338
  • 19.2.4 Nested Packages 1340
  • 19.2.5 Package Data 1341
  • 19.3 zipimport: Load Python Code from ZIP Archives 1344
  • 19.3.1 Example 1344
  • 19.3.2 Finding a Module 1345
  • 19.3.3 Accessing Code 1345
  • 19.3.4 Source 1346
  • 19.3.5 Packages 1348
  • 19.3.6 Data 1348
  • Appendix A Porting Notes 1351
  • A.1 References 1351
  • A.2 New Modules 1352
  • A.3 Renamed Modules 1352
  • A.4 Removed Modules 1354
  • A.4.1 bsddb 1354
  • A.4.2 commands 1354
  • A.4.3 compiler 1354
  • A.4.4 dircache 1354
  • A.4.5 EasyDialogs 1354
  • A.4.6 exceptions 1354
  • A.4.7 htmllib 1354
  • A.4.8 md5 1354
  • A.4.9 mimetools, MimeWriter, mimify, multifile, and rfc822 1354
  • A.4.10 popen2 1354
  • A.4.11 posixfile 1355
  • A.4.12 sets 1355
  • A.4.13 sha 1355
  • A.4.14 sre 1355
  • A.4.15 statvfs 1355
  • A.4.16 thread 1355
  • A.4.17 user 1355
  • A.5 Deprecated Modules 1355
  • A.5.1 asyncore and asynchat 1355
  • A.5.2 formatter 1355Contents xxix
  • A.5.3 imp 1356
  • A.5.4 optparse 1356
  • A.6 Summary of Changes to Modules 1356
  • A.6.1 abc 1356
  • A.6.2 anydbm 1356
  • A.6.3 argparse 1356
  • A.6.4 array 1357
  • A.6.5 atexit 1357
  • A.6.6 base64 1357
  • A.6.7 bz2 1357
  • A.6.8 collections 1357
  • A.6.9 comands 1357
  • A.6.10 configparser 1358
  • A.6.11 contextlib 1358
  • A.6.12 csv 1358
  • A.6.13 datetime 1358
  • A.6.14 decimal 1358
  • A.6.15 fractions 1358
  • A.6.16 gc 1358
  • A.6.17 gettext 1359
  • A.6.18 glob 1359
  • A.6.19 http.cookies 1359
  • A.6.20 imaplib 1359
  • A.6.21 inspect 1359
  • A.6.22 itertools 1359
  • A.6.23 json 1359
  • A.6.24 locale 1359
  • A.6.25 logging 1360
  • A.6.26 mailbox 1360
  • A.6.27 mmap 1360
  • A.6.28 operator 1360
  • A.6.29 os 1360
  • A.6.30 os.path 1361
  • A.6.31 pdb 1361
  • A.6.32 pickle 1361
  • A.6.33 pipes 1362
  • A.6.34 platform 1362
  • A.6.35 random 1362
  • A.6.36 re 1362
  • A.6.37 shelve 1362
  • A.6.38 signal 1362
  • A.6.39 socket 1362
  • A.6.40 socketserver 1363
  • A.6.41 string 1363
  • A.6.42 struct 1363xxx Contents
  • A.6.43 subprocess 1363
  • A.6.44 sys 1363
  • A.6.45 threading 1364
  • A.6.46 time 1364
  • A.6.47 unittest 1364
  • A.6.48 UserDict, UserList, and UserString 1365
  • A.6.49 uuid 1365
  • A.6.50 whichdb 1365
  • A.6.51 xml.etree.ElementTree 1365
  • A.6.52 zipimport 1365
  • Appendix B Outside of the Standard Library 1367
  • B.1 Text 1367
  • B.2 Algorithms 1367
  • B.3 Dates and Times 1368
  • B.4 Mathematics 1368
  • B.5 Data Persistence and Exchange 1368
  • B.6 Cryptography 1369
  • B.7 Concurrency with Processes, Threads, and Coroutines 1369
  • B.8 The Internet 1369
  • B.9 Email 1370
  • B.10 Application Building Blocks 1370
  • B.11 Developer Tools 1371

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
python (54,528
python3 (1,645
book (391
example (247
python-3 (211
code (154
python-library (149
books (131
ebook (108
source-code (55
ebooks (43
standard-library (17