Skip to content

《Python3 标准库》电子书和配套代码 "The Python Standard Library by Example" ebook and source code 一本又厚又全的讲解Python3标准库的书籍(1000多页)适合当作字典参考或者闲暇时慢慢阅读。

bat67/The-Python-Standard-Library-by-Example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

《Python3 标准库》电子书和配套代码 "The Python Standard Library by Example" ebook and source code 一本又厚又全的讲解Python3标准库的书籍(1000多页)适合当作字典参考或者闲暇时慢慢阅读。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages