skip to content
Logo Lostman_Wang的小站

Python函数-常用内置模块&开发规范

一、常用内置模块—os

1、os 模块是什么?

1.1、概念

  • os 是 Python 标准库中与操作系统交互的“总管”。它把 POSIX/Linux、Windows、macOS 等底层系统调用包装成统一的 Python 接口,让你用同一套代码管理文件、目录、进程、环境变量等。

1.2、导入方式

import os

2、常用方法(按功能分组)

2.1、目录/文件路径操作

方法作用常用参数返回值
os.getcwd()获取当前工作目录str,绝对路径
os.chdir(path)切换工作目录path: str, 目标目录
os.listdir(path='.')列出目录内容path: strbyteslist[str]
os.walk(top, topdown=True, onerror=None, followlinks=False)按目录树自顶向下或自底向上遍历文件夹top: 起始目录 topdown=True:先父后子;设 False 则先子后父 followlinks=False:是否跟进软链接(默认 False,避免死循环)生成器,每次 yield 一个三元组:(当前目录路径, 子目录列表, 文件列表)
os.mkdir(path, mode=0o777)创建单级目录path: str; mode: Unix 权限
os.makedirs(name, mode=0o777, exist_ok=False)递归创建多级目录name: str; exist_ok: 若 True 已存在不抛异常
os.rmdir(path)删除空目录path: str
os.removedirs(name)递归删空目录链name: str
os.remove(path)删除单个文件path: str
os.rename(src, dst)重命名或移动文件/目录src, dst: str
os.path.exists(path)判断路径是否存在path: strbool
os.path.isfile(path)判断是否为普通文件path: strbool
os.path.isdir(path)判断是否为目录path: strbool
os.path.join(a, *p)拼接路径任意多个 strstr(带平台分隔符)

2.2、环境变量与进程

方法作用常用参数返回值
os.getenv(key, default=None)读取环境变量key: str; default: 默认值strNone
os.environ环境变量映射可读写 dict-likeos._Environ
os.system(command)在子 shell 中执行命令command: strint(退出码)
os.getpid()当前进程 PIDint
os.kill(pid, sig)发信号给进程(Unix)pid: int; sig: int

2.3、文件描述符/权限

方法作用常用参数返回值
os.open(path, flags, mode=0o777)低层打开文件,返回描述符path: str; flags: intint,fd
os.close(fd)关闭文件描述符fd: int
os.chmod(path, mode)修改权限path: str; mode: int
os.stat(path)获取文件元信息path: stros.stat_result 命名元组

2.4、路径字符串高级工具(os.path 子模块)

语法作用常用参数返回值
os.path.abspath(path)转绝对路径path: strstr
os.path.dirname(p)取目录部分,若 p 已是目录,则返回其上一级目录p: strstr
os.path.basename(p)取文件名部分p: strstr
os.path.splitext(p)拆分“文件名+扩展名”p: strtuple[str, str]

3、快速对照示例

import os
# 1. 目录相关
os.makedirs('tmp/sub', exist_ok=True) # 递归建目录
print(os.listdir('tmp')) # ['sub']
# 2. 环境变量
path = os.getenv('PATH')
print(path.split(os.pathsep)) # PATH 列表
# 3. 文件描述符
fd = os.open('tmp/demo.txt', os.O_WRONLY | os.O_CREAT)
os.write(fd, b'hello os\n')
os.close(fd)
# 4. 路径工具
full = os.path.abspath('tmp/demo.txt') # 绝对路径
root, ext = os.path.splitext(full) # ('/…/tmp/demo', '.txt')

二、常用内置模块—shutil

1、shutil 模块是什么?

1.1、概念

  • shutil(shell utilities 的缩写)是 Python 标准库中 高级文件与目录操作 模块,用来弥补 os 模块在“复制、压缩、递归删除”等高阶功能上的不足。它封装了底层系统调用,支持一次性操作整个目录树、跨平台归档、压缩等。

1.2、导入方式

import shutil

2、常用方法(按功能分组)

2.1、复制相关

语法作用常用参数返回值
shutil.copy(src, dst, *, follow_symlinks=True)复制文件 内容+权限(不含元数据)src, dst: str / Path;follow_symlinks: 是否跟随符号链接str,目标路径
shutil.copy2(src, dst, *, follow_symlinks=True)复制文件 内容+权限+元数据(含时间戳)同上str,目标路径
shutil.copyfile(src, dst, *, follow_symlinks=True)仅复制 内容(无权限/元数据)同上str,目标路径
shutil.copymode(src, dst, *, follow_symlinks=True)仅复制 权限位同上
shutil.copystat(src, dst, *, follow_symlinks=True)仅复制 权限位+元数据(不含内容)同上
shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, dirs_exist_ok=False)递归复制整个目录树src, dst: str / Path;dirs_exist_ok: 允许目标已存在;其余见文档str,目标路径

2.2、移动 / 删除

语法作用常用参数返回值
shutil.move(src, dst, copy_function=copy2)移动文件或目录(跨文件系统自动复制+删除)src, dst: str / Path;copy_function: 拷贝函数str,目标路径
shutil.rmtree(path, ignore_errors=False, onerror=None)递归删除整个目录树path: str / Path;onerror: 回调处理删除失败

2.3、磁盘使用

语法作用常用参数返回值
shutil.disk_usage(path)查询磁盘空间path: str / Pathnamedtuple(total, used, free),单位字节

2.4、归档 / 压缩

语法作用常用参数返回值
shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=False, owner=None, group=None, logger=None)创建压缩归档(zip/tar/gztar/bztar/xztar)base_name: 不含扩展名;format: 'zip' 等;root_dir: 打包根目录str,生成的归档文件完整路径
shutil.unpack_archive(filename, extract_dir=None, format=None)解压缩归档filename: str;extract_dir: 解压目录;format: 自动推断或显式指定
shutil.get_archive_formats()获取当前系统支持的归档格式列表list[tuple[str, str]]
shutil.get_unpack_formats()获取支持的解压格式列表list[tuple[str, str, str]]

3、快速对照示例

import shutil, os, pathlib
# 1. 复制文件
shutil.copy2('data/report.txt', 'backup/report.txt')
# 2. 递归复制目录
dst = shutil.copytree('src', 'src_backup', dirs_exist_ok=True)
# 3. 移动目录
shutil.move('src_backup', 'archive/src_2025')
# 4. 删除目录
shutil.rmtree('tmp/cache')
# 5. 磁盘空间
usage = shutil.disk_usage('/')
print(usage.free / 2**30, 'GiB free')
# 6. 打包
zip_path = shutil.make_archive('project', 'zip', root_dir='.')
print('created', zip_path)
# 7. 解包
shutil.unpack_archive('project.zip', 'unpacked')

三、常用内置模块—sys

1、sys 模块是什么?

1.1、概念

  • sys 是 Python 解释器自带的系统级接口模块,提供与当前进程运行环境交互的变量和函数,如命令行参数、模块搜索路径、标准 I/O 和退出控制。是调试、部署和跨平台脚本中不可或缺的“解释器管家”。

1.2、导入方式

import sys

2、常用方法(按功能分组)

2.1、命令行与环境信息

语法作用参数返回值
sys.argv以列表形式存放启动脚本时的命令行参数,argv[0] 为脚本名List[str]
sys.executable当前 Python 解释器的绝对路径str
sys.path模块搜索路径列表(可修改)List[str]
sys.prefix当前 Python 安装前缀(虚拟环境时为虚拟环境根目录)str

2.2、程序退出与异常

语法作用参数返回值
sys.exit([arg])立即终止解释器;arg 可为整数、字符串或对象arg=None无(进程结束)
sys.exc_info()获取当前线程正在处理的异常三元组(type, value, traceback)
sys.last_type / sys.last_value / sys.last_traceback交互式解释器中最近一次未捕获异常信息exc_info() 对应

2.3、标准 I/O 流重定向(文件对象)

语法作用参数返回值
sys.stdin标准输入流TextIOWrapper
sys.stdout标准输出流TextIOWrapper
sys.stderr标准错误流
sys.__stdin__ / __stdout__ / __stderr__启动时的原始流备份TextIOWrapper

2.4、模块加载与元数据

语法作用参数返回值
sys.modules已加载模块的字典(键为模块名,值为模块对象)Dict[str, Module]
sys.meta_path自定义导入机制的查找器列表List[MetaPathFinder]
sys.builtin_module_names解释器内置模块名称的元组Tuple[str, ...]

2.5、解释器与运行时信息

语法作用参数返回值
sys.version解释器版本字符串str
sys.version_info版本号组成的命名元组(major, minor, micro, releaselevel, serial)sys.version_info
sys.platform平台标识符,如 'win32''linux''darwin'str
sys.implementation当前 Python 实现的信息命名元组SimpleNamespace

2.6、引用计数与垃圾回收

语法作用参数返回值
sys.getrefcount(obj)返回对象的引用计数(+1,因形参本身)obj: Anyint
sys.getsizeof(obj[, default])返回对象占用内存字节数(CPython 实现)obj: Any, default=...int

2.7、递归/栈限制

语法作用参数返回值
sys.getrecursionlimit()获取当前最大递归深度int
sys.setrecursionlimit(limit)设置最大递归深度limit: int

2.8、跟踪与性能分析

语法作用参数返回值
sys.settrace(func)安装全局跟踪函数,用于调试/性能分析func: TraceFunc | None
sys.gettrace()获取当前全局跟踪函数TraceFunc | None
sys.setprofile(func)安装性能分析函数func: ProfileFunc | None
sys.getprofile()获取当前性能分析函数ProfileFunc | None

2.9、字节序与整数信息

语法作用参数返回值
sys.byteorder本机字节序,'little''big'str
sys.maxsize平台最大 Py_ssize_t 值(列表索引上限)int

2.10、其他实用工具

语法作用参数返回值
sys.intern(string)将字符串驻留(intern),减少重复对象string: strstr
sys.getdefaultencoding()获取当前默认字符串编码str

3、快速对照示例

import sys, os, pathlib
# 1. 命令行参数
print(sys.argv) # ['demo.py', '--verbose', '42']
# 2. 解释器路径
print(sys.executable) # /usr/bin/python3.11
# 3. 模块搜索路径(添加自定义目录)
sys.path.insert(0, './my_pkgs')
# 4. 版本信息
print(sys.version) # 3.11.4 (main, Jun 6 2023, 00:00:00) ...
# 5. 退出程序并返回状态码
# sys.exit(0) # 正常退出
# 6. 标准输入逐行读取
for line in sys.stdin:
sys.stdout.write(line.upper())
# 7. 刷新缓冲区
sys.stdout.flush()

四、常用内置模块—random

1、random 模块是什么?

1.1、概念

  • random 基于 Mersenne Twister 伪随机数生成器,为仿真、抽样、加密强度以下的一般随机需求提供快速实现。

1.2、导入方式

import random

2、常用方法(按功能分组)

2.1、初始化与状态管理

语法作用参数返回值
random.seed(a=None, version=2)用可哈希对象 a 初始化随机状态;None → 系统时间a: int/str/bytes/None
version: 2 或 1
None
random.getstate()获取当前随机数生成器状态(可恢复)tuple(状态对象)
random.setstate(state)恢复先前保存的状态state: tupleNone
random.getrandbits(k)生成 k 位(二进制位)随机整数k: int ≥ 0int

2.2、区间随机整数

语法作用参数返回值
random.randrange(stop)
random.randrange(start, stop[, step])
range(start, stop, step) 中随机返回一个整数range()int
random.randint(a, b)闭区间 [a, b] 内随机整数a, b: intint

2.3、区间随机浮点数

语法作用参数返回值
random.random()[0.0, 1.0) 之间的随机浮点数float
random.uniform(a, b)[a, b](或 [b, a])之间的随机浮点数a, b: floatfloat
random.triangular(low, high, mode)三角分布随机数,mode 为峰值low, high, mode: floatfloat
random.betavariate(alpha, beta)Beta(α, β) 分布α, β > 0float
random.expovariate(lambd)指数分布,λ 为率参数lambd: float > 0float
random.gammavariate(alpha, beta)Gamma(α, β) 分布α, β > 0float
random.gauss(mu, sigma)高斯(正态)分布mu, sigma: floatfloat
random.normalvariate(mu, sigma)高斯分布(线程安全实现)mu, sigma: floatfloat
random.lognormvariate(mu, sigma)对数正态分布mu, sigma: floatfloat
random.vonmisesvariate(mu, kappa)von Mises(圆周正态)分布mu: float(弧度)
kappa: float ≥ 0
float
random.paretovariate(alpha)帕累托分布alpha: float > 0float
random.weibullvariate(alpha, beta)威布尔分布alpha, beta: float > 0float

2.4、序列随机操作

语法作用参数返回值
random.choice(seq)从非空序列中随机返回一个元素seq: Sequence元素
random.choices(population, weights=None, *, cum_weights=None, k=1)有放回抽样,可带权重population: Sequence
weights/cum_weights: Sequence[float]
None
k: int、List[Any]
random.sample(population, k, *, counts=None)无放回抽样 k 个不同元素population: Sequence
k: int ≤ len(population)
counts: Sequence[int]
None、List[Any]
random.shuffle(x[, random])就地打乱可变序列x: MutableSequence
random: 可调用随机源
None

2.5、字节级随机

语法作用参数返回值
random.randbytes(n)生成 n 个随机字节n: int ≥ 0bytes

2.6、线程安全扩展(random.Random)

语法作用参数返回值
random.Random([seed])创建独立随机实例,线程隔离seed: 同 seed()Random 实例
random.SystemRandom()基于操作系统熵源,加密安全SystemRandom 实例(无 setstate 等)

2.7、3.12+ 新增(可选)

语法作用参数返回值
random.binomialvariate(n, p)二项分布n: int ≥ 0
p: 0 ≤ float ≤ 1
int

3、快速对照示例

import random
# 初始化
random.seed(42)
# 整数
print(random.randint(1, 6)) # 骰子
print(random.randrange(0, 100, 10)) # 0~90 步长 10
# 浮点数
print(random.uniform(1.5, 2.5))
# 序列
cards = ['A', 'K', 'Q', 'J']
random.shuffle(cards)
print(cards)
# 带权重抽样
print(random.choices(['red', 'green', 'blue'], weights=[5, 2, 1], k=5))

五、常用内置模块—hashlib

1、hashlib 模块是什么?

1.1、概念

  • hashlib 是一个面向消息摘要(哈希)算法的统一接口,支持 SHA-1、SHA-2、SHA-3、BLAKE2、MD5 等安全散列与加密散列算法。

1.2、导入方式

import hashlib

2、常用方法(按功能分组)

2.1、一次性哈希(快捷函数)

语法作用参数返回值
hashlib.new(name, data=b'', *, usedforsecurity=True)按算法名 name 创建哈希对象;支持 OpenSSL 扩展name: str
data: bytes-like
hash object
hashlib.md5(data=b'')MD5 散列data: bytes-likehash object
hashlib.sha1(data=b'')SHA-1 散列data: bytes-likehash object
hashlib.sha224(data=b'')SHA-224 散列data: bytes-likehash object
hashlib.sha256(data=b'')SHA-256 散列data: bytes-likehash object
hashlib.sha384(data=b'')SHA-384 散列data: bytes-likehash object
hashlib.sha512(data=b'')SHA-512 散列data: bytes-likehash object
hashlib.sha3_224(data=b'')SHA-3-224 散列data: bytes-likehash object
hashlib.sha3_256(data=b'')SHA-3-256 散列data: bytes-likehash object
hashlib.sha3_384(data=b'')SHA-3-384 散列data: bytes-likehash object
hashlib.sha3_512(data=b'')SHA-3-512 散列data: bytes-likehash object
hashlib.shake_128(data=b'')SHAKE-128 可扩展输出data: bytes-likeshake object
hashlib.shake_256(data=b'')SHAKE-256 可扩展输出data: bytes-likeshake object
hashlib.blake2b(data=b'', *, digest_size=64, key=b'', salt=b'', person=b'')BLAKE2b 可变输出同上 + 可选 key/salt/personblake2b object
hashlib.blake2s(data=b'', *, digest_size=32, key=b'', salt=b'', person=b'')BLAKE2s 可变输出同上blake2s object

2.2、哈希对象通用方法(所有算法对象共享)

语法作用参数返回值
h.update(data)追加更多数据到哈希上下文data: bytes-likeNone
h.digest()返回二进制摘要bytes
h.hexdigest()返回十六进制字符串摘要str
h.copy()创建当前哈希对象的浅拷贝hash object
h.digest_size摘要字节长度(只读)int
h.block_size算法块大小(只读)int
h.name算法名称(只读)str

2.3、SHAKE 可变长度输出对象(额外方法)

语法作用参数返回值
s.digest(length)生成指定字节长度的摘要length: intbytes
s.hexdigest(length)生成指定长度的十六进制摘要length: intstr

2.4、BLAKE2 对象特有可调属性(读写)

语法作用参数返回值
b.digest_size = n修改/查看 BLAKE2 输出字节数n: int (blake2b: 1-64, blake2s: 1-32)int
b.key = key设置/查看密钥(仅创建后一次性设置有效)key: bytes-likebytes
.salt / .person设置/查看 salt 或 personalization同上bytes

2.5、安全常量与辅助查询

语法作用参数返回值
hashlib.algorithms_available当前解释器可用的全部算法名集合set[str]
hashlib.algorithms_guaranteed所有平台都保证可用的算法名集合set[str]

2.6、基于密码的密钥派生(PBKDF2)

语法作用参数返回值
hashlib.pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None)使用 PBKDF2-HMAC 派生密钥hash_name: str
password: bytes-like
salt: bytes-like
iterations: int
dklen: int
None、bytes

3、快速对照示例

import hashlib
# 1. 一次性
md5_hex = hashlib.md5(b'hello').hexdigest()
# 2. 分块处理大文件
sha256 = hashlib.sha256()
with open('big.iso', 'rb') as f:
for chunk in iter(lambda: f.read(1 << 20), b''):
sha256.update(chunk)
print(sha256.hexdigest())
# 3. PBKDF2 密钥派生
dk = hashlib.pbkdf2_hmac('sha256', b'password', b'salt', 100000)

六、常用内置模块—configparser

1、configparser 模块是什么?

1.1、概念

  • configparser 用来读写 Windows INI 风格(也可自定义分隔符)的配置文件,支持节(section)、键值对、插值、类型转换、默认值、嵌套节等功能。

1.2、导入方式

import configparser

2、常用方法(按功能分组)

2.1、读取与解析

语法作用参数返回值
configparser.ConfigParser(*, defaults=None, dict_type=dict, allow_no_value=False, delimiters=('=', ':'), comment_prefixes=('#', ';'), inline_comment_prefixes=None, strict=True, empty_lines_in_values=True, default_section='DEFAULT', interpolation=BasicInterpolation(), converters={})创建解析器实例见左侧完整关键字形参ConfigParser 实例
cfg.read(filenames, encoding=None)依次读取文件/路径/文件对象列表,解析配置filenames: str、Path、file-like、list thereof
encoding: str
None、list[str](成功读取的文件名)
cfg.read_file(f, source=None)从文件对象读取f: file-like
source: str(用于错误提示)
None
cfg.read_string(string, source='<string>')从字符串读取string: strNone
cfg.read_dict(mapping, source='<dict>')从 dict(可嵌套)读取mapping: dict-likeNone

2.2、写回与保存

语法作用参数返回值
cfg.write(fileobject, space_around_delimiters=True)将当前配置全部写回文件对象fileobject: file-like
space_around_delimiters: bool
None

2.3、访问与修改值

语法作用参数返回值
cfg.sections()返回所有节的名称(不含 DEFAULT)list[str]
cfg.has_section(section)判断节是否存在section: strbool
cfg.add_section(section)新建空节section: strNone,已存在则 DuplicateSectionError
cfg.remove_section(section)删除节及其所有键值section: strbool(是否删除成功)
cfg.options(section)返回某节的所有键(含 DEFAULT 继承)section: strlist[str]
cfg.has_option(section, option)判断键是否存在section, option: strbool
cfg.get(section, option, *, raw=False, vars=None, fallback=_UNSET)获取字符串值同上str
cfg.getint(section, option, *, raw=False, vars=None, fallback=_UNSET)获取整数值同上int
.getfloat获取浮点值同上float
.getboolean获取布尔值(识别 1/0, yes/no, true/false…)同上bool
cfg.set(section, option, value)设置键值section, option, value: strNone
cfg.remove_option(section, option)删除键section, option: strbool(是否删除成功)

2.4、默认值与特殊节

语法作用参数返回值
cfg.defaults()返回 DEFAULT 节的 dict 视图dict[str, str]
cfg.default_section读写默认节名(常为 'DEFAULT'无 / strstr

2.5、插值(变量替换)

语法作用参数返回值
configparser.BasicInterpolation()默认插值器:支持 %(key)s插值器实例
configparser.ExtendedInterpolation()跨节插值器:支持 ${section:key}插值器实例
构造时通过 interpolation= 参数设置指定插值器插值器实例

2.6、转换器(类型扩展)

语法作用参数返回值
cfg.converters['name'] = func注册自定义转换器,之后可用 .getname()func: str → Tdict
cfg.converters['list'] = lambda s: s.split(',')使用 cfg.getlist(section, option)

2.7、错误类(均在 configparser 命名空间)

名称作用
NoSectionError访问不存在的节
DuplicateSectionError重复添加节
NoOptionError访问不存在的键
InterpolationError 及其子类插值失败

3、快速对照示例

example.ini
[DEFAULT]
server = localhost
port = 5432
[db]
user = alice
password = secret
port = 3306 ; 覆盖 DEFAULT
import configparser, pathlib
cfg = configparser.ConfigParser()
cfg.read(pathlib.Path('example.ini'))
# 访问
print(cfg.get('db', 'user')) # alice
print(cfg.getint('db', 'port')) # 3306
print(cfg.get('db', 'server')) # localhost(继承 DEFAULT)
# 修改
cfg.set('db', 'ssl', 'true')
with open('example.ini', 'w') as f:
cfg.write(f)

七、常用内置模块—xml

1、xml 模块是什么?

1.1、概念

1.2、导入方式

2、常用方法(按功能分组)

2.1、轻量读写:xml.etree.ElementTree(ET)

语法作用参数返回值
ET.parse(source, parser=None)把文件/路径/文件对象解析成 ElementTreesource: str、Path、file-like
parser: XMLParser
ElementTree
ET.fromstring(text, parser=None)把字符串解析成根 Elementtext: str/bytesElement
ET.tostring(element, encoding='unicode', method='xml', *, short_empty_elements=True)把元素序列化成字符串element: Elementstr/bytes
ET.Element(tag, attrib={}, **extra)新建元素tag: str
attrib: dict
Element
ET.SubElement(parent, tag, attrib={}, **extra)在父节点下新建子元素同上Element
ET.dump(elem)调试:直接把元素打印到 stdoutelem: ElementNone

2.2、ElementTree 对象:遍历与修改

语法作用参数返回值
tree.getroot()获取根元素Element
tree.write(file, encoding='utf-8', xml_declaration=False)整树写回文件file: str、Path、file-likeNone

2.3、Element 对象:树形操作

语法作用参数返回值
elem.find(path, namespaces=None)按 XPath 找首个匹配子元素path: strElementNone
elem.findall(path, namespaces=None)找所有匹配path: strlist[Element]
elem.iter(tag=None)深度优先迭代所有后代tag: strgenerator[Element]
elem.get(key, default=None)取属性key: strstr
elem.set(key, value)设属性key, valueNone
elem.text = "..."读写文本内容str
elem.append(sub)追加子节点sub: ElementNone
elem.remove(sub)删除子节点sub: ElementNone

2.4、增量解析:xml.etree.ElementTree.XMLPullParser

语法作用参数返回值
ET.XMLPullParser(events=('start','end'))创建增量解析器events: tuple[str]XMLPullParser
parser.feed(data)增量喂入数据data: bytes/strNone
parser.read_events()返回已解析事件生成器generator[tuple[event,elem]]

2.5、DOM 树:xml.dom.minidom

语法作用参数返回值
minidom.parse(file)文件→DOM 树file: str、Path、file-likeDocument
minidom.parseString(string)字符串→DOM 树string: str/bytesDocument
doc.toxml(encoding=None)DOM→XML 字符串encoding: strstr
doc.writexml(writer, indent='', addindent='', newl='')DOM→文件writer: file-likeNone

2.6、SAX 流式解析:xml.sax

语法作用参数返回值
sax.make_parser()创建 SAX 解析器xmlreader.XMLReader
sax.parse(source, handler)一次性解析文件source: str、Path
handler: ContentHandler
None
sax.parseString(string, handler)解析字符串同上None

2.7、SAX 事件处理器基类

语法作用参数返回值
class MyHandler(sax.ContentHandler)自定义事件处理器
def startElement(self, name, attrs)遇到开始标签回调同上None
def characters(self, content)文本数据回调content: strNone
def endElement(self, name)遇到结束标签回调name: strNone

2.8、低级 Expat 解析器:xml.parsers.expat

语法作用参数返回值
xml.parsers.expat.ParserCreate(encoding=None, namespace_separator=None)创建 Expat 解析器同上xmlparser
parser.Parse(data, isfinal=False)解析数据块data: bytes/str
isfinal: bool
无(事件通过回调)

2.9、XPath 工具:xml.etree.ElementTree.ElementPath(简化)

语法作用参数返回值
elem.iterfind(path, namespaces=None)生成器版 findall同上generator[Element]
elem.findtext(path, default=None, namespaces=None)直接取文本同上str

2.10、命名空间支持

语法作用参数返回值
ET.register_namespace(prefix, uri)全局注册命名空间前缀prefix, uri: strNone
elem.tag = '{uri}local'读写 Clark 记号str

2.11、实用快捷工具

语法作用参数返回值
ET.indent(tree, space=' ')3.9+ 自动格式化缩进tree: Element、ElementTree
space: str
None

3、快速对照示例