python教程技术文章
-
asyncio.TaskGroup 中一个子任务失败后,其他任务会被取消,但异常不会自动变成单个 Exception。本文用可复现实验拆开 ExceptionGroup、except* 与取消传播的关系,并给出重试边界。285 收藏 -
Python 3.14 标准库支持 UUIDv7。本文从日志和数据库主键场景拆开时间字段、随机性、字符串排序与时钟回拨边界,并给出迁移验收方法。274 收藏 -
AsyncExitStack 适合在运行时决定要打开哪些异步资源,并按后进先出顺序统一清理。本文用连接池、临时目录和异常回归说明 enter_async_context、push_async_callback 与退出顺序。257 收藏 -
Python 用 zipfile 解压上传文件时,BadZipFile 往往来自错误的文件头、未完整写入或扩展名伪装。本文从 is_zipfile 与 ZipFile 验证开始,再处理成员路径和安全解压边界。246 收藏 -
Python 3.13 已将 typing.AnyStr 标记为弃用,官方建议改用新的类型参数语法。本文用字符串与字节串函数拆解迁移写法、运行版本和静态检查门禁。238 收藏 -
文章 · python教程 | 4天前 | 并发 · 日志 · python · asyncio · contextvars · 线程池 请求上下文 日志关联 Python contextvars asyncio Task
Python 异步服务需要把 request_id、租户或用户上下文带进子任务时,contextvars 能保持 Task 隔离,但跨线程不会自动复制。本文用可复现的边界检查说明 copy_context、to_thread 与日志关联的正确用法。234 收藏 -
asyncio.timeout_at 用事件循环时钟表达绝对截止时间,适合把多个异步步骤放进同一时间预算。本文从最小写法出发,说明 TimeoutError 的捕获位置、取消语义、嵌套超时和 wait_for 的边界。230 收藏 -
用 memoryview.cast 在不复制缓冲区的前提下读取固定长度二进制记录,重点检查格式字符串、C 连续布局、字节序与越界风险。226 收藏 -
文章 · python教程 | 4天前 | 标准库 · 自动化 · 浏览器 · python · webbrowser · 默认浏览器 浏览器自动化 Python webbrowser.open 无界面环境
Python 的 webbrowser.open 适合把链接交给系统浏览器打开,但它不是 Selenium 或 Playwright,返回 True 也不代表页面加载成功。本文用最小示例拆开控制器选择、返回值和无界面环境的边界。223 收藏 -
文章 · python教程 | 2天前 | SQLite · 数据一致性 · Python教程 · 事务控制 · Python SQLite 事务 sqlite3 Connection.autocommit
Python 3.12 之后 sqlite3 的事务控制增加了 Connection.autocommit。本文用一组可运行的小实验区分 False、True 与 LEGACY_TRANSACTION_CONTROL,说明 commit、rollback、close 的实际边界,并给出旧代码迁移检查清单。221 收藏 -
Python csv.DictReader 读取列数不整齐的 CSV 时,多余字段会进入 restkey,缺失字段会得到 None。本文用一组可复现的小例子说明如何校验表头、识别异常行并保留可追踪信息。215 收藏 -
文章 · python教程 | 5天前 | 配置管理 · logging · 故障排查 · Python教程 · Python logging.config.dictConfig 日志热更新 disable_existing_loggers 日志回滚
Python 用 logging.config.dictConfig 更新日志配置时,最容易误伤已有日志器、重复打开文件句柄或留下半套配置。本文用可回滚的热更新流程拆解 disable_existing_loggers、incremental 和文件处理器的边界,并给出复查方法。214 收藏 -
Python logging.Filter 不只是放行或丢弃日志;当过滤器修改 LogRecord 时,handler 之间可能互相污染上下文。本文用可运行示例拆开过滤边界、复制记录和验证方法。212 收藏 -
文章 · python教程 | 2天前 | 跨平台 · python · utf-8 · pathlib · 文件编码 · encoding 跨平台 UTF-8 locale Python pathlib.Path.read_text
Path.read_text() 省略 encoding 时会沿用文本打开的默认编码,读取 UTF-8 中文文件可能在不同环境表现不同。本文用 pathlib.Path、encoding="utf-8"、errors="strict" 和 PYTHONWARNDEFAULTENCODING 验证边界。212 收藏 -
Python 日志文件已经完成轮转,旧文件却继续变大,通常不是轮转器失效,而是进程仍持有旧文件句柄或多个 handler 重复写入。本文用 WatchedFileHandler、RotatingFileHandler 和多进程场景拆开排查,并给出可复现的验收步骤。204 收藏