16. 通用操作系统服务
********************

本章中描述的各模块提供了在（几乎）所有的操作系统上可用的操作系统特性的
接口，例如文件和时钟。这些接口通常以 Unix 或 C 接口为参考对象，不过在
大多数其他系统上也可用。这里有一个概述：

* 16.1. "os" --- 操作系统接口模块

  * 16.1.1. 文件名，命令行参数，以及环境变量。

  * 16.1.2. 进程参数

  * 16.1.3. 创建文件对象

  * 16.1.4. 文件描述符操作

    * 16.1.4.1. 查询终端的尺寸

    * 16.1.4.2. 文件描述符的继承

  * 16.1.5. 文件和目录

    * 16.1.5.1. Linux 扩展属性

  * 16.1.6. 进程管理

  * 16.1.7. 调度器接口

  * 16.1.8. 其他系统信息

  * 16.1.9. 随机数

* 16.2. "io" --- 处理流的核心工具

  * 16.2.1. 概述

    * 16.2.1.1. 文本 I/O

    * 16.2.1.2. 二进制 I/O

    * 16.2.1.3. 原始 I/O

  * 16.2.2. 高阶模块接口

    * 16.2.2.1. 内存中的流

  * 16.2.3. 类的层次结构

    * 16.2.3.1. I/O 基类

    * 16.2.3.2. 原始文件 I/O

    * 16.2.3.3. 缓冲流

    * 16.2.3.4. 文本 I/O

  * 16.2.4. 性能

    * 16.2.4.1. 二进制 I/O

    * 16.2.4.2. 文本 I/O

    * 16.2.4.3. 多线程

    * 16.2.4.4. 可重入性

* 16.3. "time" --- 时间的访问和转换

  * 16.3.1. 函数

  * 16.3.2. Clock ID 常量

  * 16.3.3. 时区常量

* 16.4. "argparse" --- 命令行选项、参数和子命令解析器

  * 16.4.1. 示例

    * 16.4.1.1. 创建一个解析器

    * 16.4.1.2. 添加参数

    * 16.4.1.3. 解析参数

  * 16.4.2. ArgumentParser 对象

    * 16.4.2.1. prog

    * 16.4.2.2. usage

    * 16.4.2.3. description

    * 16.4.2.4. epilog

    * 16.4.2.5. parents

    * 16.4.2.6. formatter_class

    * 16.4.2.7. prefix_chars

    * 16.4.2.8. fromfile_prefix_chars

    * 16.4.2.9. argument_default

    * 16.4.2.10. allow_abbrev

    * 16.4.2.11. conflict_handler

    * 16.4.2.12. add_help

  * 16.4.3. add_argument() 方法

    * 16.4.3.1. name or flags

    * 16.4.3.2. action

    * 16.4.3.3. nargs

    * 16.4.3.4. const

    * 16.4.3.5. 默认值

    * 16.4.3.6. type -- 类型

    * 16.4.3.7. choices

    * 16.4.3.8. required

    * 16.4.3.9. help

    * 16.4.3.10. metavar

    * 16.4.3.11. dest

    * 16.4.3.12. Action 类

  * 16.4.4. parse_args() 方法

    * 16.4.4.1. 选项值语法

    * 16.4.4.2. 无效的参数

    * 16.4.4.3. 包含 "-" 的参数

    * 16.4.4.4. 参数缩写（前缀匹配）

    * 16.4.4.5. 在 "sys.argv" 以外

    * 16.4.4.6. 命名空间对象

  * 16.4.5. 其它实用工具

    * 16.4.5.1. 子命令

    * 16.4.5.2. FileType 对象

    * 16.4.5.3. 参数组

    * 16.4.5.4. 互斥

    * 16.4.5.5. 解析器默认值

    * 16.4.5.6. 打印帮助

    * 16.4.5.7. 部分解析

    * 16.4.5.8. 自定义文件解析

    * 16.4.5.9. 退出方法

  * 16.4.6. 升级 optparse 代码

* 16.5. "getopt" --- C 风格的命令行选项解析器

* 16.6. 模块 "logging" --- Python 的日志记录工具

  * 16.6.1. Logger 对象

  * 16.6.2. 日志级别

  * 16.6.3. 处理器对象

  * 16.6.4. 格式器对象

  * 16.6.5. Filter 对象

  * 16.6.6. LogRecord 属性

  * 16.6.7. LogRecord 属性

  * 16.6.8. LoggerAdapter 对象

  * 16.6.9. 线程安全

  * 16.6.10. 模块级别函数

  * 16.6.11. 模块级属性

  * 16.6.12. 与警告模块集成

* 16.7. "logging.config" --- 日志记录配置

  * 16.7.1. 配置函数

  * 16.7.2. 配置字典架构

    * 16.7.2.1. 字典架构细节

    * 16.7.2.2. 增量配置

    * 16.7.2.3. 对象连接

    * 16.7.2.4. 用户定义对象

    * 16.7.2.5. 访问外部对象

    * 16.7.2.6. 访问内部对象

    * 16.7.2.7. 导入解析与定制导入器

  * 16.7.3. 配置文件格式

* 16.8. "logging.handlers" --- 日志处理

  * 16.8.1. StreamHandler

  * 16.8.2. FileHandler

  * 16.8.3. NullHandler

  * 16.8.4. WatchedFileHandler

  * 16.8.5. BaseRotatingHandler

  * 16.8.6. RotatingFileHandler

  * 16.8.7. TimedRotatingFileHandler

  * 16.8.8. SocketHandler

  * 16.8.9. DatagramHandler

  * 16.8.10. SysLogHandler

  * 16.8.11. NTEventLogHandler

  * 16.8.12. SMTPHandler

  * 16.8.13. MemoryHandler

  * 16.8.14. HTTPHandler

  * 16.8.15. QueueHandler

  * 16.8.16. QueueListener

* 16.9. "getpass" --- 便携式密码输入工具

* 16.10. "curses" --- 终端字符单元显示的处理

  * 16.10.1. 函数

  * 16.10.2. Window 对象

  * 16.10.3. 常量

* 16.11. "curses.textpad" --- 用于 curses 程序的文本输入控件

  * 16.11.1. 文本框对象

* 16.12. "curses.ascii" --- 用于 ASCII 字符的工具

* 16.13. "curses.panel" --- curses 的 panel 栈扩展

  * 16.13.1. 函数

  * 16.13.2. Panel 对象

* 16.14. "platform" ---  获取底层平台的标识数据

  * 16.14.1. 跨平台

  * 16.14.2. Java平台

  * 16.14.3. Windows平台

    * 16.14.3.1. Win95/98 specific

  * 16.14.4. Mac OS平台

  * 16.14.5. Unix 平台

* 16.15. "errno" --- 标准 errno 系统符号

* 16.16. "ctypes" --- Python 的外部函数库

  * 16.16.1. ctypes 教程

    * 16.16.1.1. 载入动态连接库

    * 16.16.1.2. 操作导入的动态链接库中的函数

    * 16.16.1.3. 调用函数

    * 16.16.1.4. 基础数据类型

    * 16.16.1.5. 调用函数，继续

    * 16.16.1.6. 使用自定义的数据类型调用函数

    * 16.16.1.7. 指定必选参数的类型(函数原型)

    * 16.16.1.8. 返回类型

    * 16.16.1.9. 传递指针(或者传递引用)

    * 16.16.1.10. 结构体和联合

    * 16.16.1.11. 结构体/联合 字段对齐及字节顺序

    * 16.16.1.12. 结构体和联合中的位域

    * 16.16.1.13. 数组

    * 16.16.1.14. 指针

    * 16.16.1.15. 类型强制转换

    * 16.16.1.16. 不完整类型

    * 16.16.1.17. 回调函数

    * 16.16.1.18. 访问 dll 中导出的值

    * 16.16.1.19. 意外

    * 16.16.1.20. 变长数据类型

  * 16.16.2. ctypes 参考手册

    * 16.16.2.1. 寻找动态链接库

    * 16.16.2.2. 加载动态链接库

    * 16.16.2.3. 外部函数

    * 16.16.2.4. 函数原型

    * 16.16.2.5. Utility functions

    * 16.16.2.6. Data types

    * 16.16.2.7. 基础数据类型

    * 16.16.2.8. Structured data types

    * 16.16.2.9. Arrays and pointers
