FDE Times 数据在招 FDE 职位 863▼55 近 7 天在招职位数的变化(同口径比较):不计入本周新开始追踪的公司的职位近 7 天新增 71在招公司 181支持远程 24%美国薪资中位数 $200k招聘最多 Palantir 95
ENVI

前线部署工程师(FDE)的专业媒体

书籍与课程

Automate the Boring Stuff 共 24 章,只读 7 章就够

这 7 章讲文件、Excel、CSV 和网页,按特定顺序读,比从头读到尾更有效。

分享微博

要点速览

  • No Starch Press 出版的第三版(2025 年 5 月)可在线免费阅读,采用 Creative Commons 许可
  • 第 10、11、14、18 章处理文件和电子表格;第 13 章讲网页,包括 Playwright
  • 三个值得养成的习惯:先查文件大小,动手前先备份,自动化浏览器之前先试 API
七层堆叠图,展示 Automate the Boring Stuff 的七个章节,自下而上阅读:10 读写文件,11 整理文件夹,18 CSV、JSON、XML(橙色高亮,并注明放在 Excel 之前是有意安排),14 Excel,15 Google Sheets,17 PDF 和 Word,13 网页抓取。
进驻客户现场第一周,《Automate the Boring Stuff with Python》(第三版)七个章节的阅读顺序。第 18 章有意排在第 14 章之前:一旦明白数据不过是纯文本,处理 Excel 主要就是把数据从 Excel 里取出来。来源:Al Sweigart 著,No Starch Press 出版,全书目录。

Al Sweigart 在这本书的官网上写道,编程最美妙的部分,是看到机器做成一件有用的事时的那种成就感。对前线部署工程师(FDE)来说,这一刻往往出现在进驻客户现场的第一周:有人发来一个塞满 Excel、PDF 和 CSV 文件的文件夹,问能不能拿它做点什么。

Automate the Boring Stuff with Python 目前已出到第三版,号称“全面修订”,由 No Starch Press 于 2025 年 5 月出版。全书可在官网按 Creative Commons BY-NC-SA 3.0 许可免费阅读,官网也提供了出版社纸质版的链接。全书共 24 章,另有两个附录。

不必通读全书。有 7 章直接对应部署初期的工作:读取文件、整理文件夹、打开电子表格、转换格式、从网页抓取数据。做演示时用不上这些,真正部署时却绕不开。

为什么一本讲“无聊事”的书适合 FDE

Agent 或 RAG 数据管道的效果,取决于喂给它的数据,而客户数据很少整整齐齐地放在 API 后面。

常见的情况是:财务每月导出的 Excel 报表,PDF 和 Word 格式的合同,或者一个完全没有文档的内部网页门户。想做有意思的部分,得先过这一关。

Sweigart 这本书教的正是这一部分,而且靠具体项目而不是理论。所以,把下面 7 章当作第一周的工具箱,从基础开始按顺序读。

章节 主要内容 在客户现场的用途
10. Reading and Writing Files 路径、读写、shelve 模块 读取客户发来的所有文件,保存临时状态
11. Organizing Files shutil、遍历目录树、zipfile 批量处理客户丢过来的文件夹
18. CSV, JSON, and XML 三种文本格式、去掉 CSV 表头、Excel 转 CSV 数据入库前先做规范化
14. Excel Spreadsheets openpyxl、公式、冻结窗格、图表 读取和修改各部门的报表
15. Google Sheets 云端电子表格 客户使用 Google Workspace 时
17. PDF and Word Documents 办公文档 合同、流程文件、用于 RAG 的文档
13. Web Scraping requests、API、Beautiful Soup、Selenium、Playwright 从没有导出功能的网页门户抓取数据

第 18 章排在第 14 章之前是有意为之。一旦习惯了 CSV、JSON 和 XML 不过是纯文本,就会明白处理 Excel 主要就是把数据从 Excel 里取出来。

实例:40 家分店的 40 个文件

假设客户是一家零售连锁企业,发来 40 个 Excel 销售文件,每家分店一个。他们想要一张合并后的总表,导入自己的分析系统。手工处理要打开 40 个文件、复制 40 次,而且至少会出一次错。

借助书中的三章,这件事只需一段短脚本。第 11 章讲如何遍历整个目录树,收集全部 40 个文件,包括藏在子文件夹深处的。第 14 章用 openpyxl 读取每个工作表,其中两个项目(统计人口普查数据、更新电子表格)和这个问题几乎一模一样。

第 18 章把结果写入一个 CSV 文件,和该章末尾的 Excel 转 CSV 练习很像。组合起来如下,这段示例假定每个文件顶部有一行表头,数据在活动工作表上:

import csv, os, shutil
from pathlib import Path
import openpyxl

SRC = Path('customer_data')

# 第 0 步:动任何文件之前,先备份原件
shutil.make_archive('original_backup', 'zip', SRC)

with open('combined.csv', 'w', newline='', encoding='utf-8') as out:
    writer = csv.writer(out)
    for folder, _, files in os.walk(SRC):      # 第 11 章:连子文件夹一起遍历
        for name in files:
            if not name.endswith('.xlsx'):
                continue
            wb = openpyxl.load_workbook(Path(folder) / name, data_only=True)  # 第 14 章
            ws = wb.active
            for row in ws.iter_rows(min_row=2, values_only=True):  # 跳过表头行
                writer.writerow([name, *row])   # 第 18 章:加一列文件名

每行开头的文件名列是个值得保留的小细节。客户问某家分店的数字为什么不对时,可以直接顺着这一行追溯到源文件,不用把 40 个文件重新打开一遍。

在客户现场,第一件事不是写循环。先像第 11 章的备份项目那样,把整个原始文件夹打成 ZIP 包,然后再动任何文件。

三个值得记住的观点

第一个来自第 10 章:Sweigart 说,可以把文件内容看成一个字符串,而这个字符串可能有好几 GB。这提醒我们,在把文件全部读进内存之前,先问清客户文件有多大。一个在样例文件上运行正常的脚本,碰到一整年的导出数据照样可能崩溃。

第二个是任何批量操作之前都要备份。对整个目录树批量操作很强大,也正因如此可能造成破坏。脚本出错时,一份未改动原件的 ZIP 包,是保住客户信任成本最低的办法。

最后一个来自第 13 章介绍工具的顺序:先讲 requests 和一个 API 示例,再讲 Beautiful Soup、Selenium 和 Playwright。在客户现场,这个顺序应该成为习惯:先问有没有 API 或导出按钮,再解析 HTML,实在没有别的办法时才自动化浏览器。

把练习用到客户现场时的常见错误

最常见的错误是:只用两个样例文件测试脚本,就直接拿去跑一整年的导出数据,还把全部内容读进内存。先问清文件大小和行数,再用一个小文件夹试运行。

第二个错误是一头扎进网页门户的抓取,而客户的用户其实早有一个导出按钮,只是没人想到去问。在客户调研阶段多问一句,可能省下一周写 Playwright 代码的时间。

最后一个是不核对结果。合并 40 个文件之后,CSV 的总行数必须等于各文件数据行数之和;对不上,就不要发给客户。

谁该读,以及怎么写进简历

如果每天都写 Python,第 10 章快速浏览即可,直接读第 11、18、14 章。如果来自前端或 Java 背景,按上表顺序把 7 章都仔细读一遍。第 15 章和第 17 章可以等客户真的用 Google Sheets,或者手里有一堆合同时再读。

写简历时,不要写“读过 Automate the Boring Stuff”。拿公开数据重做其中一个练习,推送到 GitHub,在 README 里写明处理了多少文件、节省了多少时间,再把它浓缩成一行成果。

当 FDE 岗位描述提到客户数据混乱或遗留系统时,这一行能让招聘方看到,这类工作你已经做过。

在客户现场,第一个把 40 个 Excel 文件变成一张干净表格的人,往往就是下一项工作要托付的人。

这篇文章对你有帮助吗?

7 个信源
路线图上的下一篇 · 阶段 1: 基础认知碰客户 API 之前,先学完这门免费安全课PortSwigger 课程的 API、认证和 SSRF 专题,教前线部署工程师(FDE)用攻击者视角审视自己的集成。