使用 Python 为 PDF 添加文本页眉和页脚

本文用 Spire.PDF 梳理 Python 给 PDF 添加页眉页脚的几种常见做法,包括逐页绘制文本、插入 Logo、按页面定制不同页眉,以及用页面模板自动生成页码。重点保留坐标、字体、模板和自动字段这些实现细节,方便你判断哪种方式更适合批量生成或正式文档场景。

使用 Python 为 PDF 添加文本页眉和页脚

CentOS 上部署 Python 应用,安全配置该抓哪些重点

在 CentOS 部署 Python 应用时,安全配置不能只盯着单个环节。本文从环境隔离、权限控制、网络访问、SELinux、更新、HTTPS、输入校验到密钥与日志管理,梳理一套可直接落地的加固清单。 把 Python 应用部署到 CentOS,上线后真正容易出问题的,往往不是业务代码本身,而是运行环境、权限边界和网络暴露面没有先收紧。

CentOS 上部署 Python 应用,安全配置该抓哪些重点

CentOS 中如何设置 Python 数据库连接:以 MySQL 为例

这篇文章用 MySQL 为例,梳理了在 CentOS 中让 Python 成功连上数据库的基础流程:安装服务、创建专用库和用户、安装驱动、编写测试脚本并排查常见报错。适合本地开发或测试环境快速搭建。 在 CentOS 上配置 Python 连接数据库,真正容易卡住的往往不是代码本身,而是服务状态、账号权限和连接参数没有对齐。

CentOS 中如何设置 Python 数据库连接:以 MySQL 为例

Windows 和 Python 获取 MAC 地址:命令行与代码的最简用法

这篇文章整理了 Windows 下查询 MAC 地址的三条原生命令,以及 Python 中两种最简获取方案。你可以根据是手动排查、脚本读取,还是跨平台部署,快速判断该用 `getmac`、`ipconfig /all`,还是 `netifaces`。 在设备授权、局域网联调、软件绑定机器这类场景里,MAC 地址往往是最先要拿到的一项信息。

Windows 和 Python 获取 MAC 地址:命令行与代码的最简用法

Python 中如何正确修复 `RuntimeError: Event loop is closed`?

`RuntimeError: Event loop is closed` 往往不是单点报错,而是事件循环生命周期已经失控。问题常见于 `asyncio.run()` 后继续复用 loop、跨线程误传 loop,或异步资源在 loop 关闭后才释放。本文按成因、修复方式和排查步骤梳理处理方法。 在 Python 异步开发里,`RuntimeError: Event loop is closed` 往往不是偶发异常,而是事件循环已经被关闭,后续代码却还在继续使用它。

Python 中如何正确修复 `RuntimeError: Event loop is closed`?

Python 爬虫如何处理 Cloudflare 的 5 秒盾 WAF 防护策略?

在当前主流 Cloudflare 防护下,`cloudscraper` 往往会卡在 `/cdn-cgi/challenge-platform/`,最终返回 `403/503`。问题不在于“请求没发出去”,而是新版 JS 挑战依赖 `WebAssembly`、时间校验和浏览器指纹,Node.js 模拟环境很难通过。能稳定跑通的方向,已经转向复用真实 Chromium 实例并尽量贴近人工访问行为。

Python 爬虫如何处理 Cloudflare 的 5 秒盾 WAF 防护策略?

Jupyter Notebook 提示“Permission Denied”怎么解决?先分清 runtime 目录还是工作目录

Jupyter Notebook 出现“Permission denied”通常不是程序损坏,而是运行时目录、工作目录或系统安全策略拦住了读写。本文按报错位置拆解排查路径,给出 Windows、Linux/macOS 下更稳妥的修复办法,并解释为什么一味 `chmod 777` 往往无效。 很多人遇到 Jupyter Notebook 的 Permission denied ,会先怀疑环境损坏,甚至直接重装,但这类报错大多与权限路径有关。

Jupyter Notebook 提示“Permission Denied”怎么解决?先分清 runtime 目录还是工作目录

Jupyter Notebook 怎么修改默认启动目录

想把 Jupyter Notebook 的默认启动目录固定到指定文件夹,真正长期有效的做法不是改快捷方式,而是修改配置文件里的 `c.NotebookApp.notebook_dir`。本文按“配置生效、快捷方式覆盖、临时验证、故障排查”四步拆开,帮你快速判断哪一层在接管启动路径。

Jupyter Notebook 怎么修改默认启动目录