Python学了好几年 发现功力还是那样 很多同学经常这样抱怨 都说Python入门容易 精通难 确实是这样的 每当我们打开一些牛逼的源码框架 进去看窥探大牛的源码 比如Python里面非常著名的Django和Flask里面的源码 发现跟天书一样。
今天我们来说一个非常实用的例子 小菜接到组长老王的一个任务 安排一个新的活 这个活是这样的
老王 小菜啊 你帮我写一个ssh登入脚本 跑十几条命令到服务器上 然后存一下日志。
小王 哇 这活简单啊 so easy 分分钟搞定啊 这不就是一个登入服务器的命令吗
小王思考了0.08秒 写下来猥代码
1.开始撸代码
这个活很简单 于是非常简单的想到了用Python里面的paramiko模块 直接分分钟搞定。
小菜分分钟就写完了代码 豁然觉得有点不对 这样交差是不是有点过分 怎么说自己也学了2年Python 这代码完全没有封装啊。不行不行 有点太 菜 了 不行 我要装高手一点 于是赶紧写了第二版。
2.封装成类
上面的代码太简单的了 简直就是原型机器 于是小菜用类去封装了一下 改进了一下。
设计了一个SSHClinet类 把一些用户名/密码/主机地址/端口都封装到类的属性里面 然后设计了connect函数去进行连接 如果出现异常就进行处理。然后所有的日志记录都存到双向队列history里面。
然后我们跑到服务器上执行命令 并把处理的结果stdout结果进行简单的处理 存储到history里面。当然把读取histroy和关闭链接close()也做了封装。
这个时候 小菜偷偷的瞄了一眼组长老王 常舒一口气 总于写完了。然后跑一下看看吧。
Dump the command history...
{ pwd : /root }
{ date : Mon Sep 20 16:09:19 CST 2021 }
Close ssh connection!
跑的没有问题啊 代码也很clean啊 异常都考虑了啊 打完收工
3.啥事带上下文管理器的类
老王过来检查小菜干的活 大概看了1分钟 一脸严肃的说
小菜啊 你知道with的用法吧 为啥家我们在读写文件的时候 都喜欢用with语句 因为方便啊。我们读写文件用with 然后关闭啥的我们都不用关 有with自动帮我处理。比如下面的情况
with open( 菜鸟学Python.txt , w ,encoding utf-8 ) as wf: wf.write( 我要好好学Python )
那么我们上面写的SSHClinet类是否也能像with一样灵活方便的 你好好想想吧。
这其实就是带上下文管理器的类 如果构建呢 其实很简单
我们只需要再类里面增加2个魔法函数 一个是__enter__ 一个是__exit__即可,就可以迅速把普通的类山鸡变凤凰。注意enter里面一定要返回类的对象self,否则无法调用run方法。
运行一下看看
是不是非常干净 清爽 我们把主要的逻辑封装到run里面 然后ssh连接服务器和关闭服务器都封到enter和exit里面即可。这样代码也更pythonic。
4.进阶高手
经过上面的讲解 相信大家都明白了 于是小菜若有所思的开始动手修改了原来的代码。把普通的类变成了带上下文管理器的类。
整个的代码80%都跟原来的类似 我们只是增加了__enter和__exit__ 其实就是原来的 connect和close 逻辑部分 但是这样一修改 外边在使用我们这个库的时候就会很简单。
Dump the command history...
{ pwd : /root }
{ date : Mon Sep 20 16:42:00 CST 2021 }
Close ssh connection!
是不是爽多了 高手和菜鸟的区别 在于写完代码之后会思考代码如果优化 如果提高它的扩展性 如果提高它的稳定性 如果这个代码复用 如果这个代码有更多人调用 我应该如何让他使用更简单。
如果你经常写代码的时候问这么多如果 相信总有一天你的coding 功力会大增。欢迎大家在留言区指导工作 记得给个三连哈
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
量化: 定投基金到底能赚多少钱 | 我用Python对去年800只基金的数据分析
干货:爬取豆瓣短评 电影《后来的我们》 | 38年NBA最佳球员分析| 从万众期待到口碑扑街 唐探3令人失望 | 笑看新倚天屠龙记灯谜答题王 用Python做个海量小姐姐素描图碟中谍这么火 我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人给图片上色 | 预测收入 | 碟中谍这么火 我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word 轻松搞定表格和水印 | 一键把html网页保存为pdf | 再见PDF提取收费 | 用90行代码打造最强PDF转换器 word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器 60行代码做了一个语音壁纸切换器天天看小姐姐
年度爆款文案
1).卧槽 Pdf转Word用Python轻松搞定
2).学Python真香 我用100行代码做了个网站 帮人PS旅行图片 赚个鸡腿吃
3).首播过亿 火爆全网 我分析了《乘风破浪的姐姐》 发现了这些秘密
4).80行代码 用Python做一个哆来A梦分身
5).你必须掌握的20个python代码 短小精悍 用处无穷
6).30个Python奇淫技巧集
7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货
8).再见Python 我要学Go了 2500字深度分析
9).发现一个舔狗福利 这个Python爬虫神器太爽了 自动下载妹子图片
点阅读原文,领AI全套资料



