python教程技术文章
-
QueueListener 停止时不会凭空把队列清空,而是把停止哨兵放到队尾并等待监听线程结束。本文用一个小型文件日志项目演示正确的关闭顺序、验收方式和常见丢日志边界。496 收藏 -
argparse 多子命令 CLI 中,公共参数可以先集中定义在 add_help=False 的父解析器,再通过 parents 传给每个子命令。本文用一个原创备份工具示例说明参数位置、-h 冲突、Namespace 合并和初始化顺序。427 收藏 -
Python sqlite3 中 execute() 成功只代表 SQL 已执行,不代表事务已经提交。本文解释默认事务模式、isolation_level=None、Python 3.12+ autocommit 与 with 连接管理器的区别,并给出可直接排查提交边界的示例。163 收藏 -
asyncio.wait_for 超时并不等于任务立即消失:默认会取消被等待对象并等待取消完成。本文用 finally、shield 和 Task 引用说明如何保留清理机会,并区分取消任务与继续运行任务。469 收藏 -
asyncio.timeout 适合给一段包含多个 await 的工作设置总预算,asyncio.wait_for 适合限制单个 awaitable。本文比较两者的保护范围、取消对象、TimeoutError 捕获位置和清理延迟,给出异步请求中的选择示例。386 收藏 -
文章 · python教程 | 1星期前 | Windows · Python教程 · 文件系统 · Python Python 3.15 os.path.isreserved Windows 保留路径 ntpath
Python 3.15 推荐用 os.path.isreserved 判断 Windows 保留路径。本文解释 CON、尾随空格、冒号流等名称为何需要提前拒绝,并给出 Linux 或 macOS 生成 Windows 路径时使用 ntpath.isreserved 的跨平台写法。343 收藏 -
文章 · python教程 | 1星期前 | Python教程 · pathlib · 文件系统 · Python 目录权限 Python 3.15 pathlib.Path.mkdir parent_mode
Python 3.15 为 pathlib.Path.mkdir 增加 parent_mode,让递归创建目录时可以分别设置叶目录和中间目录的模式。本文解释 mode、parent_mode、parents 与 umask 的边界,并给出兼容旧版本的写法与验证清单。243 收藏 -
讲清 Python free-threaded 构建中 C 扩展的兼容声明:多阶段初始化使用 Py_mod_gil,单阶段初始化使用 PyUnstable_Module_SetGIL,并区分容器临界区与扩展自有状态保护。260 收藏 -
在 Python 3.15 项目中比较 TypeIs 与 TypeGuard:理解真分支、假分支、不兼容类型替换和 typing 版本选择。217 收藏 -
CPython 3.15 已把 RISC-V 纳入 Tier 3 支持,但解释器能运行不等于第三方扩展已有可用轮子。本文给出 riscv64 扩展构建前的运行时、ABI、工具链、系统依赖与 wheel 标签检查清单。493 收藏 -
Python functools.lru_cache 报 unhashable type list 时,根因是可变参数不能参与缓存键。本文解释哈希边界,并用 tuple、排序后的 tuple、frozenset 和包装函数完成稳定缓存。388 收藏 -
用 Python RotatingFileHandler 按文件大小轮转日志,理解 maxBytes、backupCount、app.log.1 命名链,以及多进程写入时的安全边界。236 收藏 -
subprocess.run 的 timeout 只解决等待问题。本文用 Popen、独立进程组和 communicate,说明 POSIX 与 Windows 如何在超时后终止子进程树并回收输出。495 收藏 -
multiprocessing.Queue 的 close() 不会立刻杀掉 feeder thread,它还要把缓冲数据刷入 pipe。本文解释 close、join_thread 与 cancel_join_thread 的边界,并给出避免进程退出卡住的关闭顺序。125 收藏 -
文章 · python教程 | 1星期前 | JSON · Python教程 · 异常排查 · Python json.loads JSONDecodeError lineno colno pos JSON排错
Python 解析多行 JSON 报错时,JSONDecodeError 的 lineno 和 colno 是从 1 开始的行列坐标,pos 是 doc 中的 0 起始偏移。本文用 splitlines() 还原出错行,说明换行、空白和 Unicode 字符带来的定位边界,并给出可复用的诊断函数。326 收藏