python教程技术文章
-
importlib.metadata 读取的是已安装 distribution 的版本元数据,不是源码目录里的模块版本。本文从 pyproject.toml 配置、解释器一致性、distribution 名称和 PackageNotFoundError 四个方面给出排查方法。287 收藏 -
Python subprocess 文本输出出现 bytes、中文乱码或空结果时,重点检查 text、encoding、errors、stdout、stderr 和 returncode 的边界,并给出可直接改造的排查示例。444 收藏 -
用一个可收尾的 Python 异步日志小项目讲清 QueueHandler、QueueListener、队列容量、prepare 与 stop 的配置和排查边界。303 收藏 -
Python sqlite3 的 autocommit 要先选清自动提交、显式事务或旧式 isolation_level。本文用连接参数、in_transaction 和重连验证排查提交回滚问题,并给出 Python 3.11 及更早版本的兼容写法。488 收藏 -
Python 的 cache 与 lru_cache 不是同一种容量策略:前者等价于无限缓存,后者可用 maxsize 限制容量。本文用配置示例和 cache_info 排查命中率、键参数与失效边界。377 收藏 -
讲清 Python enum.StrEnum 的显式值、auto()、.value、str()、JSON 序列化和旧版本兼容排查方法。298 收藏 -
用 dataclasses.replace 修改 Python dataclass 时,按字段声明、InitVar、init=False 和 __post_init__ 的边界排查常见 TypeError 与 ValueError,并掌握返回新对象的正确写法。282 收藏 -
ExitStack 的关键不是设置参数,而是在资源获取后登记清理动作。本文说明 enter_context、callback、push、pop_all 的区别,并按生命周期排查资源未关闭、清理顺序错误、栈复用和异步混用问题。411 收藏 -
用 asyncio.timeout、wait_for 和 wait 处理 Python 异步超时:厘清作用域、取消、TimeoutError、shield 以及 done/pending 的差异,快速定位超时语义问题。365 收藏 -
排查 asyncio TaskGroup 失败时,区分 ExceptionGroup、兄弟任务取消和清理阻塞,使用 except* 分类处理,并正确传播 CancelledError。231 收藏 -
跨平台使用 pathlib 读写文本时,显式设置 encoding,结合 BOM、原始字节和 errors 策略排查乱码与 UnicodeDecodeError,并保持读取和写回的编码契约。235 收藏 -
用 importlib.resources.files 读取包内模板,说明 Traversable、as_file、压缩包资源和打包配置之间的边界。244 收藏 -
文章 · python教程 | 1星期前 | Python教程 · 进程管理 · Python subprocess.Popen Python实时读取标准输出 Python子进程管道堵塞 Python进程管理
用 subprocess.Popen 实时读取子进程输出时,不能只盯着 stdout;同时消费 stderr、让子进程及时 flush,并在退出后回收线程,才能避免管道堵塞和日志丢失。492 收藏 -
用 Python logging 的 QueueHandler 和 QueueListener 把慢速日志输出移到独立线程,并说明级别、队列满载、prepare 与退出 stop 的关键边界。165 收藏 -
csv.DictReader 遇到缺失列时不会自动替业务规则报错。本文用一个订单 CSV 导入器区分缺失列、缺失值和多余列,并给出带文件名、行号和字段名的 Python 错误处理代码。286 收藏