尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

用Python写了个脚本,把每天2小时的Excel活儿干没了

用Python写了个脚本,把每天2小时的Excel活儿干没了 这不是教程是一个普通打工人的生存记录上周, 同事瞧见我, 在30秒的时间里, 生成了月度销售报表, 便询问我, 是不是使用了什么付费软件。我打开终端敲了三行代码bashcd ~/.py# 生成完成文件已保存到//.xlsx同事愣住了你还会编程我说不是会编程是被逼出来的。为什么选不是Excel不是VBA不是低代码平台说实话我试过很多路子在Excel宏/VBA里, 写的时候如同在进行考古那般, 调试的情形恰似去开盲盒那样, 至于跨平台运行是连想都不要去想的事情。低代码工具拖拖拉拉配半天不如直接复制粘贴付费的自动化软件, 价格高昂, 并且, 每一款软件的运行逻辑均不相同, 学完一款之后, 再去学习另一款, 又需要重新开始学习。最后选就一个原因它是编程界的瑞士军刀。说的并非是你必须得成为程序员, 然而此门语言自身拥有的特性, 致使这特性专门适宜去做这类“半技术半业务”如此这般的事:那种语法简单得不像编程语言, 其中的for i in range(10)更是比Excel的SUM()还好理解 , 这是一种情况。让人难以想象到的库多, Excel存在着, 网页具备加量版本、邮件存在此物、文件拥有该操作系统版本, 你所需要的基本上都有已准备好现成的那种。一经编写, 各处运行, Mac、Linux均可运行, 同事若需使用, 发出脚本即可。我的自动化实战路线不是系统教程是踩坑记录第一步环境搭建跳了好多坑直接说结论别去下载那些集成环境官网下原版就行。我的配置# 3.11新版本的类型提示太香了# VS Code 插件说到pip, 必须得用venv虚拟环境, 不然后期会陷入依赖地狱哦。# 创建项目mkdircd-m venv venvvenv/bin/ # 用 venv\\# 装包pip第二步从Excel自动化开始这个回报最快第一个项目自动合并12个月的销售数据以往采取的方式是, 将12个Excel文件予以打开, 进行复制粘贴的操作, 对格式加以更改, 开展算汇总的工作, 耗时起码2小时。做法as pdfrom Path# 读取所有月度数据路径对象Path以字符串形式传入参数./data, 调用其glob方法, 传入通配符模式*.xlsx筛选文件 , 放入files中。dfs pd.(f) for f in files# 合并、计算、保存 pd.(dfs) .(产品, 地区).agg({销售额: sum,销量: sum}).()关于年度汇总.xlsx, 索引为假的情况。30行代码5秒出结果。重心落于具可复用性之上: 下个月之时候, 只需将全新之文件放置到data文件夹那儿, 接着再跑上一次如此之操作即可达成。第三步文件系统自动化这个看似简单实则最实用我的下载文件夹以前是个垃圾堆截图、PDF、Excel、安装包混在一起找文件要翻半天现在用自动整理from Path Path(~/)RULES {.pdf, 其对应的是 文档/PDF。.xlsx格式的文件, 属于文档类别中的Excel类型。.png: 图片,.jpg: 图片,在“ .dmg”这里面, 它所对应的是“安装包”。for file in .():if file.():ext file..lower()if ext in RULES: / RULES.mkdir(True, True)移动, 将文件转换为字符串形式, 再 将斜杠与文件名拼接转换为字符串形式。设为定时任务每天自动跑。下载文件夹永远整整齐齐。第四步网页数据抓取这个是真的省时间老板让我每周统计竞品在3个平台的价格。以手工方式来做: 每个平台都要打开, 之后进行搜索这款产品, 接着记录下该产品的价格, 最后填入表格之中, 每周所需时间为40分钟。做法from bs4as pddef 抓取价格(平台, 产品名):# 每个平台的结构不同这里简化演示网址等于, 由“https://”加上那个平台, 再加上“.”, 再加上“com/?q”, 再加上产品名, 组合而成的字符串。 {User - Agent: 以斜杠开头, 后面跟着数字5, 再跟着点, 再跟着零, 省略号部分为其他字符组成的内容\。 .get(url, )# 找到价格元素这里要根据实际网页结构调整在 soup 里查找, 查找那个标签名为 span , 且属性等于 price 的内容, 以得出查询结果。将文本中的特定字符即单引号内的“¥”以及空字符串转换为浮点数进行处理。“产品A”, “产品B”, “产品C” , 这三个不同的产品 , 各自有着不同的特点呀。data for in :for in :price 抓取价格(, )data.({产品: ,平台: ,价格: price,时间: pd..now()})df pd.(data)读取名为“竞品价格监控.xlsx”的文件, 不设置索引, 输出为格式。5分钟写完以后每周跑一次就行。注意网页结构经常变要维护。但总体来说比手动抄快太多了。第五步定时任务调度让脚本自己跑库简单到不像话timefrom 抓取价格, 发送邮件def 日常任务():# 1. 抓取数据抓取价格()# 2. 生成报表生成报表()# 3. 发送邮件发送邮件()print(任务完成)# 每天早上9点跑每一天, 在“09 : 00”的时候, 去做日常任务。while True:.()time.sleep(60)设为开机自启动真正的无感自动化。我的工具箱里有什么具体到库和文件结构~//├── venv/ # 虚拟环境├── /│ ├── .py # Excel相关│ ├── .py # 文件整理│ ├── .py # 网页抓取│ └── .py # 邮件发送├── data/│ ├── / # 模板文件│ └── raw/ # 原始数据├── .json # 配置文件├── .txt # 依赖列表└── main.py # 主入口核心库这些是真的好用表格复制场景 库 用途Excel处理 , 读写、计算、合并文件操作 , , os 路径处理、文件移动网页抓取 , HTTP请求、HTML解析定时任务 任务调度邮件发送 , email 邮件自动化数据存储 轻量级数据库踩过的三个大坑新手必看坑1依赖地狱最开始是为了贪图省事, 于是直接通过pip去安装包, 然而随后在重新安装系统之后, 却发觉忘掉了都安装了哪些包, 最终脚本全部崩溃了。解决始终用虚拟环境.txtbashpip .txt # 导出依赖pip -r .txt # 恢复依赖坑2硬编码路径一开始脚本里到处都是/Users/name//data换台电脑全废。解决用相对路径配置文件jsonfrom Path json.load(f) Path(坑3没有错误处理脚本跑着跑着崩了不知道为什么。解决加上try-日志记录.(.log,level.INFO,%()s - %()s - %()stry:# 你的代码passas e:.error(f出错了: {e})从能用到好用的进阶初级阶段写个脚本自己用能跑就行代码烂点无所谓手动运行手动填参数中级阶段优化代码给同事用模块化拆分成函数和类配置文件参数可配置错误处理遇到问题不崩高级阶段做成工具可分发打包成exe写文档齐全版本控制Git单元测试我现在在中级和高级之间徘徊。够用就行不用追求完美。说实话这些脚本没什么技术含量真的。我写的这些脚本任何一个学过基础的人都能写出来。然而这偏偏就是要点所在, 即你并非一定要成为算法工程师那般, 并非一定要懂得机器学习相关内容, 并非一定要知晓设计模式方面的知识, 那么你只要:会基础语法变量、循环、函数、文件操作会用几个核心库、、os会查资料遇到问题/Stack 就这么简单。最后这不是编程这是生存技能现况下, 存有“会运用工具”以及“不太会运用工具”这两种情形, 二者之间的差距, 正以那种可以凭借肉眼清晰瞧见的速率, 不断放大着。不是讲你非得要学, 你能够运用Excel、采用低代码、借助任何工具, 关键所在是: 你可不可以将重复劳动实现自动化?只是我选的那个工具因为它免费强大易学通用如果明天出来个更好的工具我也会学。工具不重要自动化思维才重要。
返回列表