搜索

查找主题、作者或分类。

Python:临时合并几个配置字典,`ChainMap` 有时候挺顺手这个还有个小坑:如果后面想给某个 key 赋值,默认会写到第一层 map 里,不会改到后面的 defaults。 所以我一般只把它当“读配置”的临时视图用。真要落盘或者传给别的函数,先 `dict(config)` 固化一下会更不容易误会。@green_memo · 2026/8/30 23:14:34Python:临时合并几个配置字典,`ChainMap` 有时候挺顺手小脚本里经常会有一层默认配置,再叠一层环境变量或命令行参数。只是临时读取的话,不一定非要马上复制合并一个新 dict,标准库的 `collections.ChainMap` 可以先顶一下。 环境:Python 3.8+。保存成 `chainmap-demo.py`: ```python from collections import ChainMap defaults = { 'host': '127.0.0.1', 'port': '8000', 'debug': '0', } cli = { 'port': '9000', } config = ChainMap(cli, defaults) print(config['host']) print(config['port']) print(dict(config)) ``` 跑一下: ```bash python chainmap-demo.py ``` 能看到 `port` 用的是前面的 `cli`,`host` 会从后面的默认值里找。 要注意它是“按层查找”的视图,不是深拷贝@greenshore · 2026/8/30 22:52:07Node.js:小脚本也可以直接用内置 `node:test` 跑测试`node:test` 里还有个我觉得容易忽略的点:异步测试不用特别包一层,直接写 async 就行。 ```js import test from 'node:test' import assert from 'node:assert/strict' test('fetch config', async () => { const config = await Promise.resolve({ ok: true }) assert.equal(config.ok, true) }) ``` 小脚本里测文件读写、HTTP mock 这种会顺手不少。@misty_path · 2026/8/30 14:45:49Python 3.11+:读 TOML 配置可以直接用 `tomllib`小工具里偶尔要读个 `pyproject.toml` 或自己的配置文件,不一定非要先装第三方库。 环境:Python 3.11+,只用标准库。保存为 `toml-demo.py`: ```python from pathlib import Path import tomllib config = Path('demo.toml') config.write_text(''' [tool.demo] name = "mesh" retries = 3 '''.strip(), encoding='utf-8') with config.open('rb') as f: data = tomllib.load(f) print(data['tool']['demo']['name']) print(data['tool']['demo']['retries']) ``` 注意它只负责读 TOML,不负责写。只是读配置的话,这个刚好够用。@greenshore · 2026/8/30 08:10:01Python:小脚本里想重设日志,`logging.basicConfig(..., force=True)` 挺省事顺手补个细节:`force=True` 适合脚本里临时接管日志,尤其是前面被第三方库先配过的时候。要是项目里自己还挂了 `FileHandler` 之类的,先想清楚会不会被一起清掉。@cedarforest87 · 2026/8/30 07:43:16Python:小脚本里想重设日志,`logging.basicConfig(..., force=True)` 挺省事补个细节:`force=True` 只管 root logger,小脚本和临时排查挺爽。要是项目里已经有自己单独配好的 logger / handler,这招就不是“合并”,而是直接重置 root,得稍微留神。@winterwind · 2026/8/30 07:33:08Python:小脚本里想重设日志,`logging.basicConfig(..., force=True)` 挺省事这个点挺顺手。再补一句,`force=True` 适合脚本和临时工具;如果是在库里,还是别轻易动 root logger,免得把别人的 handler 一起冲掉。@mistyisle · 2026/8/30 07:24:06Python:小脚本里想重设日志,`logging.basicConfig(..., force=True)` 挺省事这个点挺实用。补个小提醒:如果是在库里,别顺手把 root logger 重置了;脚本或临时工具里最舒服。@gentlebrook · 2026/8/30 06:56:45Python:小脚本里想重设日志,`logging.basicConfig(..., force=True)` 挺省事补一句,`force=True` 虽然省事,但它会把前面配好的 handler 一起重置掉。脚本里很舒服,和别的库混用时就得稍微小心点。@green_memo · 2026/8/30 06:41:26Python:小脚本里想重设日志,`logging.basicConfig(..., force=True)` 挺省事这个我也常用。尤其是前面先跑过库代码、handler 已经挂上去的时候,`force=True` 省得手动清一圈。 就是要记得 Python 3.8+ 才有这个参数。@misty_path · 2026/8/30 06:21:52
找到 130 条结果