ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

用Python自动化办公:三个真实可落地的脚本案例

2026/8/20 19:47:44 拓冰建站 浏览量
用Python自动化办公:三个真实可落地的脚本案例 下班前半小时老板丢来一个压缩包里面有23个Excel文件每张表都带着不同格式的日期、错位的列名、还有几行莫名其妙的合并单元格。你刚用鼠标拖拽完前三个表微信又响了“明早要出汇总。”这不是职场情景剧这是每个办公室文员的日常噩梦。用Python自动化办公不是让你卷成程序员而是把那些重复、机械、毫无创造力的操作交给代码去扛。接下来的三个脚本案例全部来自真实工作场景没有一句空洞的概念每一行都能直接复制去用。案例一Excel报表自动合并与清洗——别再用“CtrlC”侮辱数据了许多财务和运营同事每天都在做同一件事从各个部门收集表格然后手动复制粘贴到一张总表。一旦超过十个文件不仅耗时还容易漏行。更荒谬的是不同部门交上来的表日期列有的写“2024-01-01”有的写“2024/1/1”还有的直接写成“一月一日”。你手动粘了三小时的数据很可能因为一个格式不一致就让透视表彻底崩溃。这个脚本的核心思路只有三步读取目录下所有Excel文件、统一列名和日期格式、按关键列追加合并。用pandas可以轻松搞定。先看读取部分import pandas as pd import glob files glob.glob(data/.xlsx) dfs [] for f in files: df pd.read_excel(f, dtypestr) # 先读成字符串避免日期被自动转换 dfs.append(df) raw pd.concat(dfs, ignore_indexTrue)接下来是清洗。很多表头都有空格、换行符有的叫“姓名”有的叫“名字”必须先归一化def clean_columns(df): df.columns [c.strip().replace(\n, ).replace(名字, 姓名) for c in df.columns] return df raw clean_columns(raw)日期清洗是重头戏。用pd.to_datetime配合errorscoerce自动将各种格式变成标准日期raw[日期] pd.to_datetime(raw[日期], errorscoerce).dt.strftime(%Y-%m-%d) raw raw.dropna(subset[金额]) # 删除无数据的垃圾行这个脚本跑完23个文件合并清洗只需不到五秒。真正的效率提升不是从十小时变成八小时而是从十小时变成五秒你下班前点一下运行带杯咖啡回来就全好了。但有一点必须注意read_excel默认会把数字读成float如果某个字段是“001”你会丢掉前导零。所以清洗时先用dtypestr读入再按需转换字段类型这是无数人踩过的坑。案例二批量PDF发票提取与重命名——手动改文件名是最卑微的体力活财务人员每个月都要处理几十上百张电子发票PDF文件名通常是一串乱码比如“202405_发票_电子.pdf”。你需要把这些文件重命名为“公司名_日期_金额.pdf”方便归档和查账。如果靠肉眼逐张打开PDF那就每单金额”之类的话太慢了。但用Python你可以写一个脚本来自动提取信息。这个案例用的工具是pdfplumber它比PyPDF2的优势在于能更精准地提取文本。先安装并读取PDF内容import pdfplumber import os def extract_invoice_info(pdf_path): with pdfplumber.open(pdf_path) as pdf: first_page pdf.pages[0] text first_page.extract_text() # 假设文本里有购方名称XXX和金额123.00 buyer re.search(r购方名称[:]\s(.), text) amount re.search(r金额[:]\s([\d,]\.\d{2}), text) # 提取并处理 buyer_name buyer.group(1).strip() if buyer else 未知 invoice_amount amount.group(1).replace(,, ) if amount else 0.00 return f{buyer_name}_{invoice_amount}.pdf处理文件夹里所有PDF文件folder invoices/ for fname in os.listdir(folder): if fname.endswith(.pdf): new_name extract_invoice_info(os.path.join(folder, fname)) os.rename(os.path.join(folder, fname), os.path.join(folder, new_name))有些PDF是扫描件没有可复制的文字层这就涉及OCR技术。你可以用pytesseract配合pdf2image来做。但别指望一个脚本通吃所有场景。能正确提取数字文本的PDF识别已经能为你每天省下至少一小时。如果你连扫描件都想自动化请先确认你的PDF清晰度够不够否则OCR结果比手动输入更糟糕。更聪明的做法是不要盲目提取所有字段而是只提取你真正需要的两三个关键值。工作场景里的自动化不是炫耀技术而是解决你的具体痛点。哪怕只帮你省掉重命名文件的动作这个脚本就值得写。还有一个小技巧处理完文件后把提取结果写进一个Excel日志方便日后翻查。案例三邮件自动发送带附件报表——别让“发邮件”成为你的每日苦役每周五下午把上周的销售数据整理成Excel发给所有相关领导和同事。这件事本身不复杂但总有人忘记附上最新的附件或者把“回复全部”点成“转发”。更尴尬的是给十几个收件人发送时有的领导想看汇总表有的只关心自己部门的数。你可以写一个脚本根据收件人不同自动生成个性化报表并带上对应的附件。这个脚本使用yagmail它比原生的smtplib简单太多。先安装并设置邮箱账号import yagmail import os import pandas as pd # 配置文件发送邮箱 yag yagmail.SMTP(useryour_accountxx.com, passwordyour_token)注意这里的“password”不是邮箱登录密码而是SMTP授权码。邮件自动化最大的坑不是代码问题而是把授权码写死在脚本里还把脚本传到了公共仓库。我建议你使用环境变量或者一个.env文件。然后构建收件人列表和各自的附件路径recipients { 老板: [bossxx.com, data/汇总报表.xlsx], 部门主管: [managerxx.com, data/部门明细.xlsx], }发送邮件时只要循环这个字典就行for name, (email, attachment) in recipients.items(): subject f销售周报 - {pd.Timestamp.now().strftime(%Y-%m-%d)} body f{name}您好\n这是本周销售数据请查收附件。 yag.send(toemail, subjectsubject, contentsbody, attachmentsattachment)就这样每次发送邮件前你只需运行一个生成报表的Python脚本它可以和案例一合并然后运行这个发信脚本。整个过程不到一分钟。真正的自动化省心不是一次性解决所有问题而是把任务拆解成几个可独立运行的脚本每个脚本只做一件事并且做好一件事。邮件脚本还有进阶玩法结合Python的schedule库设置每天定时执行。但这里我要泼一盆冷水千万别让脚本在无人监督的情况下自动给老板发邮件。一旦数据出错或脚本报错你会在两分钟内收到老板的咆哮。所以定时发送前至少留出半小时的人工审核缓冲。从脚本到工作流自动化不是炫技而是生存手段你发现没有上面三个案例没有一个需要高深的算法或机器学习。它们全都在做数据处理、文件整理、邮件发送。Office自动化的本质是把你从“人肉操作计算机”变成“指挥计算机干活”。但很多人的误区在于他们想一次性把整个工作流程自动化结果写了一千行脚本跑一次就报错最后不得不放弃。更聪明的做法是先自动化最痛苦的那一步哪怕每周只用一次也值回票价。比如案例一中你可以先只做合并不洗数据观察几周后再逐步加入清洗逻辑。案例二里你可以先手动重命名第一个文件看脚本能不能提取出正确字段再处理全部。这种迭代式开发才是真实职场里最稳妥的路径。在自动化面前懒惰不是缺点而是驱动力。但只有用对工具和策略的懒惰才叫生产力。不过这里有一个更深层的观点——自动化会放大你的效率同样也会放大你代码里的每一个bug。如果你的原始数据里有一个隐藏的空格手工处理时你可能根本不察觉但脚本会稳定地把它传给下一环节最后在汇总表里变成一个神秘的空值。所以当你开始享受脚本带来的快捷时请记住你写下的每一行代码都是你工作的另一个人格。你得为它负责为它测试为它写注释。把“用Python办公”变成你的肌肉记忆这三个脚本你现在就可以去实现。但我更希望你理解背后的三个原则数据读取统一用字符串起步避免隐式类型转换文件处理先测试单个样本再批量执行邮件脚本必须留人工确认缝隙。这些原则远比代码本身更值钱。也许你觉得自己不是程序员记不住语法。可今天的Python已经有了无数工具复杂的操作都被封装成一行API。遇到不懂的函数用help()遇到报错把错误信息复制到搜索引擎。你不需要成为编程高手只需要成为能读懂报错信息并愿意调试三次的那个人。最后我要说一个有些扎心的事实未来五年不会用Python处理办公表格的人就像今天不会用搜索查找资料的人一样不是被淘汰而是会被那些会自动化的人以三倍效率轻松超越。这句话不是危言耸听——当别人用脚本五秒完成了你三小时的活你唯一能说服老板的理由只剩下“我态度认真”。可认真从来抵不过效率。所以关掉这篇文章后去打开你的文件夹。找一个你每天都在做的重复操作写一个二十行以内的脚本。哪怕只是把几十个文件名统一加上日期你也算真正迈进了自动化的大门。从第一个小脚本开始你会发现自己对自己的工作第一次有了掌控感。这种掌控感就是Python送你最好的职场礼物。