- 在 Web 应用中,文件上传是非常常见的功能。例如:用户上传头像管理员上传文章封面编辑人员上传文章配图用户上传 PDF、Word 等附件后台管理文件列表、删除文件FastAPI 提供了 UploadFile 和 File,可以方便地接收上传文件。不过,一个真正可用的文件上传模块,并不只是接收文件并保存到服务器,还需要考虑:文件类型校验,避免上传危险文件。文件大小限制,避免占用过多磁盘空间。随... 在 Web 应用中,文件上传是非常常见的功能。例如:用户上传头像管理员上传文章封面编辑人员上传文章配图用户上传 PDF、Word 等附件后台管理文件列表、删除文件FastAPI 提供了 UploadFile 和 File,可以方便地接收上传文件。不过,一个真正可用的文件上传模块,并不只是接收文件并保存到服务器,还需要考虑:文件类型校验,避免上传危险文件。文件大小限制,避免占用过多磁盘空间。随...
- 用 Python 写过网络请求的人都遇到过:脚本平时跑得好好的,某天网络抖一下,请求卡住不动,整个任务跟着挂掉。requests 默认是没有超时时间的,timeout 不设,请求可能一直等下去。给每个请求设超时,是写网络代码的第一条规矩。timeout 参数可以传一个数,也可以传一对数。传一个数是连接超时和读取超时共用同一个值;传元组比如 timeout=(3, 10),前面是连接超时——3... 用 Python 写过网络请求的人都遇到过:脚本平时跑得好好的,某天网络抖一下,请求卡住不动,整个任务跟着挂掉。requests 默认是没有超时时间的,timeout 不设,请求可能一直等下去。给每个请求设超时,是写网络代码的第一条规矩。timeout 参数可以传一个数,也可以传一对数。传一个数是连接超时和读取超时共用同一个值;传元组比如 timeout=(3, 10),前面是连接超时——3...
- 从网关到客户端 从网关到客户端
- 使用 Python 标准库 object_pairs_hook 拒绝嵌套重复键,使用 parse_constant 拒绝 NaN、Infinity 和 -Infinity 字面量。本文给出可运行实现,并明确顶层类型、科学计数法溢出和业务校验的边界,避免把局部严格解析误认为完整 JSON Schema 验证。 使用 Python 标准库 object_pairs_hook 拒绝嵌套重复键,使用 parse_constant 拒绝 NaN、Infinity 和 -Infinity 字面量。本文给出可运行实现,并明确顶层类型、科学计数法溢出和业务校验的边界,避免把局部严格解析误认为完整 JSON Schema 验证。
- 固定内容的文件连续压缩两次哈希却不同?问题不在压缩算法,而在 gzip 头的 mtime 与 FNAME 字段。本文给出本地实测的对照数据、可重复构建的检查清单,以及去掉文件名侧信道的方法。 固定内容的文件连续压缩两次哈希却不同?问题不在压缩算法,而在 gzip 头的 mtime 与 FNAME 字段。本文给出本地实测的对照数据、可重复构建的检查清单,以及去掉文件名侧信道的方法。
- 刚开始写Python时,很多人都会直接在系统自带的Python里装各种包。起初很方便,项目一多就容易出问题:A项目要某个库的旧版本,B项目要新版本,同一个环境装不下两个版本;换一台电脑重装,又想不起当初装了哪些包、分别是哪个版本。这些麻烦,大多可以用虚拟环境和简单的依赖管理习惯解决。虚拟环境可以理解为给每个项目单独准备的一间小屋子。屋子里的Python解释器和第三方包只属于这个项目,不会和别... 刚开始写Python时,很多人都会直接在系统自带的Python里装各种包。起初很方便,项目一多就容易出问题:A项目要某个库的旧版本,B项目要新版本,同一个环境装不下两个版本;换一台电脑重装,又想不起当初装了哪些包、分别是哪个版本。这些麻烦,大多可以用虚拟环境和简单的依赖管理习惯解决。虚拟环境可以理解为给每个项目单独准备的一间小屋子。屋子里的Python解释器和第三方包只属于这个项目,不会和别...
- 刚开始用 Python 写网络请求时,很多人只关心能不能拿到数据,却容易忽略两个最常见的翻车点:请求一直卡住,以及偶发失败后直接报错退出。requests 库本身提供了超时和重试的机制,理解它们的分工,就能让脚本在真实网络里稳得多。 超时不是一个数字requests 的 timeout 参数看起来简单,实际上包含两个阶段。连接超时是指建立 TCP 连接的最长等待时间,读取超时是指发送请求后等... 刚开始用 Python 写网络请求时,很多人只关心能不能拿到数据,却容易忽略两个最常见的翻车点:请求一直卡住,以及偶发失败后直接报错退出。requests 库本身提供了超时和重试的机制,理解它们的分工,就能让脚本在真实网络里稳得多。 超时不是一个数字requests 的 timeout 参数看起来简单,实际上包含两个阶段。连接超时是指建立 TCP 连接的最长等待时间,读取超时是指发送请求后等...
- 命令行输入 False 为什么反而得到 True?用可运行示例说明 argparse 的 store_true、BooleanOptionalAction、默认值与错误处理,避免脚本开关的隐蔽误用。 命令行输入 False 为什么反而得到 True?用可运行示例说明 argparse 的 store_true、BooleanOptionalAction、默认值与错误处理,避免脚本开关的隐蔽误用。
- 脚本要复用人工登录出来的浏览器会话,就得走 CDP 而不是 launch()。本文给出 Chrome 156 / Playwright 1.64 上的实测数据:connect_over_cdp 仅 305ms、new_page 102ms;browser.close() 只断连接不杀进程;SPA 在 domcontentloaded 时 innerText 长度为 0、DOM 节点 36 个,3 脚本要复用人工登录出来的浏览器会话,就得走 CDP 而不是 launch()。本文给出 Chrome 156 / Playwright 1.64 上的实测数据:connect_over_cdp 仅 305ms、new_page 102ms;browser.close() 只断连接不杀进程;SPA 在 domcontentloaded 时 innerText 长度为 0、DOM 节点 36 个,3
- 把 Windows 自动化脚本踩过的坑整理成清单:无 BOM 的 UTF-8 被按 GBK 解码、中文目录与工作目录缺失、批处理必须 CRLF、以及如何让失败可见。 把 Windows 自动化脚本踩过的坑整理成清单:无 BOM 的 UTF-8 被按 GBK 解码、中文目录与工作目录缺失、批处理必须 CRLF、以及如何让失败可见。
- 刚开始学 Python 时,很多人会在系统自带的 Python 里直接 pip install,装得越多越乱:A 项目要 Django 4,B 项目要 Django 5,升级一个就可能把另一个跑坏;换一台电脑又要重新摸索装了什么。解决办法并不复杂,就是给每个项目一个独立的虚拟环境,再给 pip 配一个离自己更近的镜像源。下面这套做法,我在本地开发中一直在用,步骤少、出错也好排查。 一、为什么... 刚开始学 Python 时,很多人会在系统自带的 Python 里直接 pip install,装得越多越乱:A 项目要 Django 4,B 项目要 Django 5,升级一个就可能把另一个跑坏;换一台电脑又要重新摸索装了什么。解决办法并不复杂,就是给每个项目一个独立的虚拟环境,再给 pip 配一个离自己更近的镜像源。下面这套做法,我在本地开发中一直在用,步骤少、出错也好排查。 一、为什么...
- 新手写 Python 时,经常在各处使用 print 来查看运行状态。项目变大后,这些零散输出会混在一起,既找不到关键信息,也很难区分普通提示和真正错误。一个只有二十行左右的日志小工具,就能解决这个问题。它不依赖任何第三方库,只用标准库,就能让输出统一、有时间、有级别。为什么要统一日志首先,统一格式能让阅读成本大幅下降。时间、级别和内容固定出现在同一位置,扫一眼就能判断这条信息是否需要处理。... 新手写 Python 时,经常在各处使用 print 来查看运行状态。项目变大后,这些零散输出会混在一起,既找不到关键信息,也很难区分普通提示和真正错误。一个只有二十行左右的日志小工具,就能解决这个问题。它不依赖任何第三方库,只用标准库,就能让输出统一、有时间、有级别。为什么要统一日志首先,统一格式能让阅读成本大幅下降。时间、级别和内容固定出现在同一位置,扫一眼就能判断这条信息是否需要处理。...
- 明明只在一个项目里 pip install,结果别的项目也跟着变了?那是装到全局了。虚拟环境就是给每个项目一个隔离的包环境:本文用 venv 三分钟上手。 明明只在一个项目里 pip install,结果别的项目也跟着变了?那是装到全局了。虚拟环境就是给每个项目一个隔离的包环境:本文用 venv 三分钟上手。
- 解析Python 3.11引入的enum.StrEnum机制,演示自动小写赋值、原生str继承、无损JSON序列化及反查校验,并分析其适用边界与类型隔离陷阱。 解析Python 3.11引入的enum.StrEnum机制,演示自动小写赋值、原生str继承、无损JSON序列化及反查校验,并分析其适用边界与类型隔离陷阱。
- 解析文本和CSV文件时,首部UTF-8 BOM签名易导致首个字典键或列名被\ufeff污染。本文讲解利用codecs.BOM_UTF8嗅探与utf-8-sig解码消除BOM的实践与排查边界。 解析文本和CSV文件时,首部UTF-8 BOM签名易导致首个字典键或列名被\ufeff污染。本文讲解利用codecs.BOM_UTF8嗅探与utf-8-sig解码消除BOM的实践与排查边界。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签