项目作者: bat67

项目描述 :
《Python3 标准库》电子书和配套代码 "The Python Standard Library by Example" ebook and source code 一本又厚又全的讲解Python3标准库的书籍(1000多页)适合当作字典参考或者闲暇时慢慢阅读。
高级语言: Python
项目地址: git://github.com/bat67/The-Python-Standard-Library-by-Example.git


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



English Version

Table of Contents


展开查看


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