假装Python高手,把类这样改,真刺激!

一起学爬虫(Python) — 12 今天我们学模拟登陆前景导入战况分析开始实战截取Cookie结束 前景导入 4 3 9 9 ! 没错,今天我们就要对她下手了,没想到吧,昔日大家的童年女神,今天就要被在座的各位尽情的玩弄,冲冲冲! 众所周知啊,我们的4399呢,虽然每次玩小游戏都不需要登录叭,但是她确确实实是有登陆这个功能的!有没有想来一局紧张又刺激的森林冰火人呢??? 上不去了…… 好吧,不能忘了今天的主题,模拟登陆!!! 战况分析 点击登录呢,就会弹出这样一个窗口进来,一看这个绿油油的按键,就能想到这肯定是个动态操作鸭,那肯 阅读详情

Python学了好几年,发现功力还是那样,很多同学经常这样抱怨!都说Python入门容易,精通难,确实是这样的,每当我们打开一些牛逼的源码框架,进去看窥探大牛的源码,比如Python里面非常著名的Django和Flask里面的源码,发现跟天书一样。

5447eb53287ffc4113393e2b3f027b19.png

今天我们来说一个非常实用的例子,小菜接到组长老王的一个任务,安排一个新的活,这个活是这样的:

老王:小菜啊,你帮我写一个ssh登入脚本,跑十几条命令到服务器上,然后存一下日志。

小王:哇,这活简单啊,so easy 分分钟搞定啊!这不就是一个登入服务器的命令吗~~

小王思考了0.08秒,写下来猥代码:

19e045f7272900f432b3c8cfb1200d7c.png

fd4873d262a637bb62291d647096abc2.png

1.开始撸代码

这个活很简单,于是非常简单的想到了用Python里面的paramiko模块,直接分分钟搞定。

2fd78ee1a8a08128b44c03bfda0d11ef.png

小菜分分钟就写完了代码,豁然觉得有点不对,这样交差是不是有点过分,怎么说自己也学了2年Python ,这代码完全没有封装啊。不行不行,有点太'菜'了,不行,我要装高手一点,于是赶紧写了第二版。

2.封装成类

上面的代码太简单的了,简直就是原型机器,于是小菜用类去封装了一下,改进了一下。

fa492393281004a689c008ec5686a3ab.png

设计了一个SSHClinet类,把一些用户名/密码/主机地址/端口都封装到类的属性里面,然后设计了connect函数去进行连接,如果出现异常就进行处理。然后所有的日志记录都存到双向队列history里面。

db5c29a1b463f6c636cbc734b8e393e8.png

然后我们跑到服务器上执行命令,并把处理的结果stdout结果进行简单的处理,存储到history里面。当然把读取histroy和关闭链接close()也做了封装。

这个时候,小菜偷偷的瞄了一眼组长老王,常舒一口气,总于写完了。然后跑一下看看吧。

3956b5b3abddfe0d86687540cadd12c5.png

>

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一样灵活方便的,你好好想想吧。

这其实就是带上下文管理器的类,如果构建呢?其实很简单:

cce059254609d3f9fb38e33b99c6d010.png

我们只需要再类里面增加2个魔法函数,一个是__enter__,一个是__exit__即可,就可以迅速把普通的类山鸡变凤凰。注意enter里面一定要返回类的对象self,否则无法调用run方法。

运行一下看看:

0678cc22d4e29bdc8a4c48d704d7e608.png

是不是非常干净,清爽,我们把主要的逻辑封装到run里面,然后ssh连接服务器和关闭服务器都封到enter和exit里面即可。这样代码也更pythonic。

4.进阶高手

经过上面的讲解,相信大家都明白了,于是小菜若有所思的开始动手修改了原来的代码。把普通的类变成了带上下文管理器的类。

841d1089cf76bdac6724537b74dcfb6f.png

整个的代码80%都跟原来的类似,我们只是增加了__enter和__exit__,其实就是原来的 connect和close 逻辑部分,但是这样一修改,外边在使用我们这个库的时候就会很简单。

9fcced737bb921ac3f107b6e2c9d3c1e.png

>

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行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案


 

 

 

 

 

 


 

 

 
点阅读原文,领AI全套资料!
python编程-第五节-if语句-002 在编程世界里,我们经常需要扮演"侦探"角色——检查某个元素是否潜伏在我们的列表中。 想象你开了一家披萨店,顾客可以自选配料,但你需要确认他们点的配料是否在你的供应清单里。 Python为此提供了超级方便的`in`操作符,就像一位高效的餐厅领班,能瞬间告诉你某位"客人"(元素)是否在"餐厅"(列表)里。 阅读详情

相关推荐

python编程-第六节-字典-002

想象一下: 你正兴冲冲地向朋友炫耀你新抓到的外星人,突然系统崩溃了! 原因竟是你要查看一个根本不存在的"分数"属性。 这就像向一个单身狗要结婚证一样尴尬! 让我们看看这个"社死"现场:

欢迎来到测试猿的吐槽大会!这里没有鸡汤,只有段子。功能测试:在需求文档里找漏洞,在界面上玩大家来找茬。自动化测试:让代码替我加班,而我负责喝咖啡摸鱼。性能测试:给服务器施压,看它到底能扛几拳。全流程质量守护:从需求评审到上线,一路带刀护送。 862

VS Code之Java代码重构和源代码操作

本篇介绍VS Code在Java 开发的代码重构和源代码操作

oscar999的专栏 2296

线性同余生成器(LCG)原理、Python实现与密码学攻击实战

伪随机数生成器(PRNG)是计算机科学中生成确定性序列的基础工具,其核心原理是通过数学递推公式产生看似随机的数字序列。线性同余生成器(LCG)作为最经典的PRNG之一,结构简单、计算高效,但因其线性本质存在严重的安全缺陷。在密码学领域,随机数的不可预测性至关重要,而LCG的序列仅需少量连续输出即可被完全破解,这使其成为密码学中的“反面教材”。通过分析序列的线性关系,攻击者可以轻松恢复LCG的全部内部参数(乘数、增量、模数),从而预测所有未来输出,这在实际工程中可能导致会话令牌、初始化向量等关键数据泄露。本文

chouzu8463的博客 388

Python实现Paramiko的二次封装

Paramiko是一个用于执行SSH命令的Python第三方库,使用该库可实现自动化运维的所有任务,如下是一些常用代码的封装方式,多数代码为半成品,只是敲代码时的备份副本防止丢失,仅供参考,目前本人巡检百台设备完全无压力。

微软技术分享 8494

Oracle Scheduler任务故障诊断 实战指南

当基础环境无异常时,需聚焦任务本身的配置与状态。定义(JOB)→ 调度(SCHEDULE)→ 执行(SLAVE进程)→ 日志(LOG),每个环节都可能存在卡点。Oracle Scheduler任务的“隐性故障”看似棘手,实则是环境配置、资源竞争、时间逻辑等问题的集中体现。通过本文的诊断工具和排查思路,你可以构建从“基础环境→任务配置→执行链路→日志追踪”的全维度分析体系,让每一个“消失”的任务都无所遁形。

Nuzbb的博客 1074

告别示教器!用C#和ABB PC SDK 6.08打造你的第一个Windows机器人控制台(附完整连接代码)

本文详细介绍了如何使用C#和ABB PC SDK 6.08开发Windows机器人控制台应用,实现无示教器的机器人控制。从环境配置、SDK引用到机器人发现、连接及状态监控,提供了完整的代码示例和架构设计建议,帮助开发者快速掌握上位机控制技术。

weixin_29758911的博客 323

小白必看的假装Python高手的方法!(有料)不是标题党

Python里面的技巧真的是太多了,菜鸟如何假装自己的是高手呢,下面教大家几招快速变成老司机的招数,尤其是在实战的项目中,用上这几招一定让你周围的同事刮目相看,哇这个代码有两把刷子。 1.大量的if-else结构 我们在平时项目的时候会经常遇到大量的if/elif 这样的情况,非常常见,通常我的写法如下,比如一个每周上周的情况: 上面的代码一来比较丑,二来扩展性非常不好,如果我要把一周的排课的顺序调整,需要对代码的结构做很大的调整。如果结构再复杂一点的话更麻烦。 理想的情况是这样,构建一个一

qq_38887171的博客 282

CVPR2023新作HAT实战:5分钟搞定图像超分辨率重建(附代码)

本文介绍了CVPR2023新作HAT模型在图像超分辨率重建中的实战应用。HAT通过创新的混合注意力机制,显著提升了图像重建质量,能激活更多有效像素并减少伪影。文章提供了从环境配置到模型部署的完整指南,帮助开发者在5分钟内快速实现图像超分辨率重建,并附有代码示例和性能优化技巧。

weixin_29062613的博客 238

Python @property:别再裸奔了!让你的属性穿上“衣服”

property就是给你的属性“穿上衣服”——外表看起来还是那个简单属性,实际上里面藏着各种逻辑验证。既保持了接口的简洁,又实现了内部的复杂控制。看看这代码,属性直接暴露在外,谁都能乱改。:一开始可以裸奔属性,后来想加验证?(更多关于@property的细节可参考其他博客文章)——>这种依赖其他属性的,用@property完美伪装。:某些属性只读、只写,或者删除时特殊处理。装饰的方法,del时调用。——啰嗦得像个老太太!装饰的方法,读取时调用。装饰的方法,赋值时调用。:需要时才计算,省资源。

2502_90986347的博客 163

Cadence Design Entry HDL 使用教程

Cadence Design Entry HDL 使用教程 前言 cadence Design Entry HDL是cadence内部集成的一款板级的EDA设计工具,早期叫 concept HDL。其为cadence最早的原配板级电路图绘制工具,只不过由于后来cadence收购了orcad然后就将旗下的capture CIS收入其中,由于后者使用起来上手简单,所以后者更为大家所熟知。虽然大家对...

uio159753的博客 4万+

微信公众号网页H5跳转小程序实战指南(开放标签wx-open-launch-weapp)微信H5跳转小程序、wx-open-launch-weapp、小程序跳转按钮、微信开放标签、H5打开小程序

跳转小程序(wx-open-launch-weapp)唤起App显示支付按钮等等……而我们这次要用的,就是跳转小程序的标签。场景是否支持服务号网页✅ 支持小程序静态网页托管✅ 支持订阅号❌ 不支持微信外部浏览器❌ 不支持这个“开放标签”功能其实很强大,除了跳转小程序,还有唤起APP、跳支付、调用客服等能力。但可惜资料零散,很多坑等着你亲自踩一遍。这篇文章我整理的流程基本涵盖了从“能不能跳”到“怎么跳”的完整路径,希望你能像我一样省下几个小时的踩坑时间。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1163

Python恶搞代码2:“无限弹窗+自定义消息+系统操作”终极整蛊

本文分享了使用Python编写的恶搞代码,包括无限弹窗、自定义警告消息和系统关机操作等整蛊技巧。通过tkinter和os模块实现视觉轰炸效果,适合新手学习Python基础操作,但需注意使用场景和道德边界。

weixin_42520661的博客 259

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

statistics+insight+vista+power 634

智能血压计遇上Python程序员:数据采集奇遇记与设备对比指南

"为了拯救这份薛定谔式养生焦虑,我决定用Python给家里的飞利浦血压计装个"电子小秘书"。老爸学会用棉被盖住血压计逃避监测,老妈开发出"测前深蹲降压法",熊孩子甚至试图修改数据库——建议同步开发防作弊算法,比如检测到连续三次完美数据就自动锁定设备。毕竟,能让嘴硬的家人承认"最近确实吃咸了",这可比任何代码成就都有满足感。此刻它们就像被迫相亲的年轻人,一个拼命发送数据包,另一个假装矜持地接收,场面既尴尬又温馨。建议给每个异常值贴上"洗澡勿测""吵架后无效"等趣味标签,让健康报告读起来像悬疑小说。

qq_38220914的博客 390

YOLOv8改进 | 注意力机制 | 添加HAttention(HAT)超分辨率重建助力小目标检测 (全网首发,超分辨率检测)

本文给大家带来的改进机制是HAttention注意力机制,混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制来提升单图像超分辨率重建的性能。通道注意力关注于识别哪些通道更重要,而自注意力则关注于图像内部各个位置之间的关系。HAT利用这两种注意力机制,有效地整合了全局的像素信息,从而提供更为精确的结果(这个注意力机制挺复杂的光代码就700+行),但是效果挺好的也是10月份最新的成果非常适合添加到大家自己的论文中。⭐⭐⭐⭐⭐(最新的改进机制)

Snu77的博客 1万+

K8S部署Java项目 pod的logs报错为:Error: Unable to access jarfile app.jar

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 2600

爬虫爬虫!手把手教你做一个“网络搬运工”

本文是一篇Python网络爬虫入门教程,用幽默风格介绍了爬虫的基本原理和实现方法。文章将爬虫比喻为"网络搬运工",通过HTTP请求/响应机制获取数据,并推荐使用requests和BeautifulSoup库。教程包含实战示例(爬取段子网站标题),演示了伪装请求头、解析HTML和提取数据的关键步骤,同时强调爬虫伦理(设置延迟避免封IP)。最后指出爬虫是大数据时代的重要技能,为进阶学习(如动态页面处理)奠定基础。文章旨在帮助初学者快速上手基础爬虫技术。

AI心易行者 1217

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

基于西门子CO在线监控采集的环境监测

现在有了西门子CO在线监控,摸鱼的时候都能用手机查实时数据——真不是教你偷懒,这玩意儿确实让环境监测变得像刷短视频一样简单。这套系统上线后最直观的变化:环保检查从备战状态变成日常展示项目,设备异常停机减少37%,顺便还逮住过两次夜班偷抽烟的愣头青——PM2.5数值飙得比股票涨停还刺激。实时看板用Plotly搞了个三维曲面图,厂长看了直呼"有科幻片内味"。不过最实用的还是微信报警功能——超标数据自动@相关责任人,比打电话催债还及时。搞过工控的都懂,数据采集最怕遇上"薛定谔的通讯"——时有时无还丢包。

2503_93933470的博客 543

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

换行幽灵——Vim的诡异问题

Vim是个相当不错的工具,我一直用它。但就算是一款如此牛逼的工具,偶尔也会给你的生活带来麻烦,就像所有好用或不好用的工具一样,就像我那部老旧的剃须刀一样(它更像个绞肉机,只是附带了切割胡须的功能)。回到今天的主题,我最近在用Python写一个解析日志的小工具,非常简单。因为需要解析的日志之格式是每行一条记录,因此这个解析器的全部功能就是读入一行日志,然后解析它。虽说Linux保证不同进程对于用O_APPEND标志打开的同一文件写入是原子操作,但它并没有说读入也是原子操作(当然更可能是我比较土),更不用说是用

tossgoer的专栏 1560

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

第一章 blender的安装(2)

这是一篇面向新手的 Blender 全平台安装与配置入门指南。文章先用通俗的类比讲解了稳定版、长期支持版(LTS)、每日构建版、源码编译四类 Blender 发行版本的定位与适用人群,帮助读者按需选择;随后分别针对 Windows 和 Linux 两大系统,详细介绍了安装程序、便携压缩包、软件商店 / 包管理器、Snap 等多种安装与更新方案的操作步骤和优劣;最后补充了 Linux 平台 Alt 键冲突、图形环境兼容、解压注意事项等常见问题的解决方案,帮助读者快速完成环境搭建,避开入门踩坑。

欢迎来到测试猿的吐槽大会!这里没有鸡汤,只有段子。功能测试:在需求文档里找漏洞,在界面上玩大家来找茬。自动化测试:让代码替我加班,而我负责喝咖啡摸鱼。性能测试:给服务器施压,看它到底能扛几拳。全流程质量守护:从需求评审到上线,一路带刀护送。 211

python画海绵宝宝_适合23岁宝宝的亲子互动游戏大全

点击关注让宝宝在家科学上早教适合2-3岁宝宝的亲子互动游戏大全,2-3岁是孩子身体和想象力,对世界的探索欲到了发展的阶段,父母一定要注重2-3岁宝宝的亲子游戏互动,让宝宝的身体和大脑都得到充分的发展。今天王伊为您介绍几个适合2-3岁宝宝的亲子互动游戏。2-2.5岁亲子游戏1、接沙滩球大多数宝宝会接球前就能扔球了,他们喜欢用小胳膊抱球,家长可以指导宝宝学习接球。开始时,把球滚到宝宝...

weixin_39637921的博客 576

基于西门子CO在线监控采集的环境监测系统

现在有了西门子CO在线监控,摸鱼的时候都能用手机查实时数据——真不是教你偷懒,这玩意儿确实让环境监测变得像刷短视频一样简单。这套系统上线后最直观的变化:环保检查从备战状态变成日常展示项目,设备异常停机减少37%,顺便还逮住过两次夜班偷抽烟的愣头青——PM2.5数值飙得比股票涨停还刺激。实时看板用Plotly搞了个三维曲面图,厂长看了直呼"有科幻片内味"。不过最实用的还是微信报警功能——超标数据自动@相关责任人,比打电话催债还及时。搞过工控的都懂,数据采集最怕遇上"薛定谔的通讯"——时有时无还丢包。

BZGLOqgZ的博客 440

基于西门子CO在线监控采集技术的环境监测系统与应用研究

现在有了西门子CO在线监控,摸鱼的时候都能用手机查实时数据——真不是教你偷懒,这玩意儿确实让环境监测变得像刷短视频一样简单。这套系统上线后最直观的变化:环保检查从备战状态变成日常展示项目,设备异常停机减少37%,顺便还逮住过两次夜班偷抽烟的愣头青——PM2.5数值飙得比股票涨停还刺激。实时看板用Plotly搞了个三维曲面图,厂长看了直呼"有科幻片内味"。不过最实用的还是微信报警功能——超标数据自动@相关责任人,比打电话催债还及时。搞过工控的都懂,数据采集最怕遇上"薛定谔的通讯"——时有时无还丢包。

HJHoMFoavQSO的博客 226

用队列解决约瑟夫环问题

什么是约瑟夫环问题约瑟夫问题,有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.据说著名犹太历史学家 Jo...

czhf0002的博客 3762

业内人来聊聊柳柳的Ai工作和50w薪资

今天《半熟恋人》公开收入的时候,我真的被柳柳圈粉了。 按节目披露: 柳柳月薪4—5万,年薪50万+,在MiniMax做产品运营负责人。

weixin_58753619的博客 635

程序员的奇幻漂流

预计阅读时间:35分钟这是明哥的第197篇原创。公众号:明哥的江湖转载联系:code_gg_boy文章较长,先收藏再阅读!题记一个人一只脚踩入了泥潭中,他弯着腰,双...

程序员入门进阶 2850
上一篇: 霸榜GitHub!这个Python项目有人刷到头秃
下一篇: “宇宙第一IDE”终于上架Microsoft Store!
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值