现在正值疫情期间,在家时间较多,虽说是远程办公,但工作节奏也不紧凑,便想着这段时间也不能浪费,总得学点东西。于是,便学习了许久以前在极客时间买的《零基础学Python》课程。由于我本身也是做后端开发的,加上这个课程老师讲得比较好,学得还算顺畅。学习的时候,也会结合自己之前的工作经历思考,发现有的工作用 Python 处理起来的确很方便。下面我就来举个小例子。
故事大概是这样的:有一次老板临时让统计接口被对方调用的次数,由于原先代码里并没有统计接口调用次数的逻辑,所以无法直观地查询数据库。还好当时记录了接口的请求日志,所以就找出日志文件,通过 grep 命令匹配接口关键字查询,相关命令如下:
# api-access-2020-03-02.log 为日志文件
# 如 查询库存接口调用次数
grep -c "product/stock" api-access-2020-03-02.log
# 查询结果
8363
# 如查询商品列表接口次数
grep -c "product/list" api-access-2020-03-02.log
# 查询结果
455
...
# 依次查询各个接口的调用次数
当时是这样查询的,可以看出需要执行多次命令,虽然可以实现,但是比较繁琐。在学习了 Python 之后,便有了更高效的方法。方法如下:首先将要查询的接口列出来,放在文本里,不同接口通过“|“分隔,暂定命名为 api.txt,如下:
product/stock|product/list
2. 编写 Python 脚本,命名为 access_log_analysis.py,代码如下:
# 分析接口的调用次数
import re
def find_item(hero):
with open("api-access-2020-03-02.log", encoding="UTF-8") as f:
data = f.read().replace(" ", "")
name_num = re.findall(hero, data)
print("接口 %s 出现 %s 次" % (hero, len(name_num)))
return len(name_num)
with open("api.txt") as f:
for line in f:
names = line.split("|")
for n in names:
name_num = find_ite
3. 执行脚本
python access_log_analysis.py
接口 product/stock 出现 8363 次
接口 product/list 出现 455 次
可见,无论多少接口,我们都可以只执行一次脚本,便能统计出所有接口的调用次数,效率相比于原来的做法提高了很多。
本文只通过一个简单的小例子,体现了 Python 在做数据分析时的便捷性。相信在不断地学习过程中,会有更多的收获。加油咯~
编辑|lee