-
Python读取TXT乱码主因是编码未显式指定,应据文件实际编码用encoding='utf-8'或'gbk'等;不确定时可用chardet探测;utf-8-sig可自动处理BOM;read()适合小文件,readline()/readlines()按需选择。
-
match-case不是简化if-elif的万能工具,而是专用于嵌套结构、类型+字段组合、多条件解构的利器;用错场景反而降低可读性、引入bug。
-
弱引用不能自动避免内存泄漏,其生效前提是目标对象除弱引用外无其他强引用;典型用途包括WeakValueDictionary缓存、观察者模式解耦等,但需注意key生命周期、线程安全及finalize的不确定性。
-
使用AWSSAM部署Lambda函数时,若通过samdeploy--template-file显式指定模板文件,会导致依赖包(如requirements.txt中声明的pytest)未被正确打包上传,从而在运行时抛出ModuleNotFoundError。根本原因在于该参数绕过了SAM的自动构建产物引用机制。
-
asyncio无分布式锁,需用Redis实现:通过SETkeyvalueNXEX原子加锁,Lua脚本安全解锁,UUID防误删,超时须大于业务耗时,避免contextmanager封装,重视降级与监控。
-
Python处理跨平台换行符时,可通过open函数自动转换或手动替换统一为\n。读取时使用文本模式可自动标准化为\n;需精确控制时可用replace方法将\r\n和\r替换为\n;写入时通过newline参数指定换行格式;批量处理可结合pathlib遍历文件并统一换行符,确保跨平台兼容性。
-
处理大文件需流式读取与增量计算:按行读取最稳妥,分块读取适用于无行结构文件,生成器封装提升复用性,结合csv.DictReader、itertools.islice、Welford算法等实现高效内存控制。
-
direnv加载Python环境变量不生效,主因是shellhook未激活;需在~/.zshrc或~/.bashrc中添加eval"$(direnvhook$SHELL)"并source;.envrc中禁止裸export,须先direnvallow或用export_with_env;layoutpython可自动管理虚拟环境与PYTHONPATH,避免手动sourcevenv/bin/activate;gitclone后必须手动direnvallow才能加载.envrc。
-
requests库中不存在Cookie_Request类,正确操作Cookie应使用requests.Session.cookies或response.headers.get('Set-Cookie');加密Cookie无法解密,重点在于正确携带与更新。
-
aggregate()默认聚合全表数据,无需filter();支持多字段一次计算,返回单字典结果;空值返回None需手动处理;分组聚合须用values()+annotate()。
-
asyncio.Condition()必须显式传入asyncio.Lock实例,否则报错;wait()需在持锁时调用,会自动释放并重获锁;notify无需持锁但建议在锁内调用以保证原子性;不可用threading.Condition替代,因其阻塞事件循环。
-
ReportLab生成PDF中文乱码需注册中文字体并显式指定,如pdfmetrics.registerFont(TTFont('SimHei','fonts/simhei.ttf'));表格换行用Paragraph+WORDWRAP;Web响应须设Content-Type:application/pdf;高并发下字体注册一次、样式用.clone()、避免全局修改。
-
itertools.chain(*nested)是展开双层嵌套列表最省事的方法,不建中间列表、不递归、纯流式拼接,但需解包且要求子项为非字符串可迭代对象。
-
直接用pipinstalljsonpath安装原生库(非jsonpath-ng),路径需以$开头、无空格,传入已解析的dict/list;匹配失败返回False而非空列表,须类型检查isinstance(result,list)后再处理。
-
使用open()或pathlib读取文件为字符串,小文件可用read()或Path.read_text(),大文件建议分块读取以避免内存溢出。