python十个运维实战项目_干货 | 这4个Python实战项目,让你瞬间读懂Python!

Python是一种极具可读性和通用性的编程语言。Python这个名字的灵感来自于英国喜剧团体Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣。Python易于设置,并且是用相对直接的风格来编写,对错误会提供即时反馈,对初学者而言是个很好的选择。

Python是一种多范式语言,也就是说,它支持多种编程风格,包括脚本和面向对象,这使得它适用于通用目的。随着越来越多地在工业中,被诸如联合太空联盟(NASA的主要飞机支持承包商)和工业光魔(VFX 和卢卡斯影业的动画工作室)等组织使用,Python 为那些寻求额外编程语言的人提供了巨大的潜力 。

当一个重要的被称为comp.lang.python的Python新闻组在1994年形成时,Python 的用户基础不断增长,这为Python成为开源开发中最受欢迎的编程语言之一铺平了道路。

Python当下真的很火。Python实战项目,也一直尤为关注,接下来,和大家介绍下Python练手的实战项目。

**Python项目练习一:即时标记

**

这是《Python基础教程》后面的实践,照着写写,一方面是来熟悉Python的代码方式,另一方面是练习使用Python中的基本的以及非基本的语法,做到熟能生巧。

这个项目一开始比较简单,不过重构之后就有些复杂了,但是更灵活了。

按照书上所说,重构之后的程序,分为四个模块:处理程序模块,过滤器模块,规则(其实应该是处理规则),语法分析器。

先来说处理程序模块,这个模块的作用有两个,一个是提供那些固定的html标记的输出(每一个标记都有start和end),另一个是对这个标记输出的开始和结束提供了一个友好的访问接口。来看下程序handlers.py:

这个程序堪称是整个“项目”的基石所在:提供了标签的输出,以及字符串的替换。理解起来也比较简单。

再来看第二个模块“过滤器”,这个模块更为简单,其实就是一个正则表达式的字符串。相关代码如下:

就是三个过滤器了,分别是:强调牌过滤器(用×号标出的),url牌过滤器,email牌过滤器。熟悉正则表达式的同学理解起来是没有压力的。

再来看第三个模块“规则”,这个模块,抛开那祖父类不说,其他类应该有的两个方法是condition和action,前者是用来判断读进来的字符串是不是符合自家规则,后者是用来执行操作的,所谓的执行操作就是指调用“处理程序模块”,输出前标签、内容、后标签。 来看下这个模块的代码,其实这个里面几个类的关系,画到类图里面看会比较清晰。 rules.py:

补充utils.py:

如果你在学习Python的过程中遇见了很多疑问和难题,可以加-q-u-n 227 -435-450里面有软件视频资料免费

总结一下:

最后隆重的来看下“语法分析器模块”,这个模块的作用其实就是协调读入的文本和其他模块的关系。在往重点说就是,提供了两个存放“规则”和“过滤器”的列表,这么做的好处就是使得整个程序的灵活性得到了极大的提高,使得规则和过滤器变成的热插拔的方式,当然这个也归功于前面在写规则和过滤器时每一种类型的规则(过滤器)都单独的写成了一个类,而不是用if..else来区分。 看代码:

这个模块里面的处理思路是,遍历客户端(也就是程序执行的入口)给插进去的所有的规则和过滤器,来处理读进来的文本。

有一个细节的地方也要说一下,其实是和前面写的呼应一下,就是在遍历规则的时候通过调用condition这个东西来判断是否符合当前规则。

我觉得这个程序很像是命令行模式,有空可以复习一下该模式,以保持记忆网节点的牢固性。

最后说一下我以为的这个程序的用途:

1、用来做代码高亮分析,如果改写成js版的话,可以做一个在线代码编辑器。

2、可以用来学习,供我写博文用。

还有其他的思路,可以留下您的真知灼见。

补充一个类图,很简陋,但是应该能说明之间的关系。另外我还是建议如果看代码捋不清关系最好自己画图,自己画图才能熟悉整个结构。

** Python项目练习二:画幅好画**

这是《Python基础教程》中的第二个项目,关于Python操作PDF,涉及到的知识点:

1、urllib的使用

2、reportlab库的使用

这个例子着实很简单,不过我发现在Python里面可以直接在数组[]里面写for循环,真是越用越方便。

下面是代码:

**Python项目练习三:万能的XML**

这个项目的名称与其叫做万能的XML不如叫做自动构建网站,根据一份XML文件,生成对应目录结构的网站,不过只有html还是太过于简单了,如果要是可以连带生成css那就比较强大了。这个有待后续研发,先来研究下怎么html网站结构。 既然是通过XML结构生成网站,那所有的事情都应该由这个XML文件来。先来看下这个XML文件,website.xml:

有了这个文件,下面应该来看怎么通过这个文件生成网站。

首先我们要解析这个xml文件,Python解析xml和在Java中一样,有两种方式,SAX和DOM,两种处理方式不同点在于速度和范围,前者讲究的是效率,每次只处理文档的一小部分,快速而能有效的利用内存,后者是相反的处理方式,先把所有的文档载入到内存,然后再进行处理,速度比较慢,也比较消耗内存,唯一的好处就是可以操作整个文档。

在Python中使用sax方式处理xml要先引入xml.sax中的parse函数,还有xml.sax.handler中的ContentHandler,后面的这个类是要和parse函数来配合使用的。使用方式如下: parse('xxx.xml',xxxHandler),这里面的xxxHandler要继承上面的ContentHandler,不过只要继承就行,不需要有所作为。 然后这个parse函数在处理xml文件的时候,会调用xxxHandler中的startElement函数和endElement函数来一个xml中的标签的开始和结束,中间的过程使用一个名为characters的函数来处理标签内部的所有字符串。

有了上面的这些认识,我们已经知道如何处理xml文件了,然后再来看那个罪恶的源头website.xml文件,分析其结构,只有两个节点:page和directory,很明显page表示一个页面,directory表示一个目录。

所以处理这个xml文件的思路就变的清晰了。读取xml文件的每一个节点,然后判断是page还是directory如果是page则创建html页面,然后把节点中的内容写到文件里。如果遇到directory就创建一个文件夹,然后再处理其内部的page节点(如果存在的话)。

下面来看这部分代码,书中的实现比较复杂,比较灵活。先来看,然后在分析。

看起来这个程序上面分析的复杂了一些,不过伟人毛毛说过,任何复杂的程序都是纸老虎。那我们再来分析一下这个程序。

首先看到这个程序是有两个类,其实完全可以当作一个类,因为有了继承。

然后再来看它多了些什么,除了我们分析出来的startElement和endElement以及characters,多出来了startPage,endPage;startDirectory,endDirectory;defaultStart,defaultEnd;ensureDirectory;writeHeader,writeFooter;和dispatch,这些个函数。除了dispatch,前面的函数都很好理解,每一对函数都是单纯的处理对应的html标签以及xml节点。而dispatch比较复杂,复杂之处在于他是用来动态拼合函数并且进行执行的。

dispatch的处理思路是,首先根据传递的参数(就是操作名称以及节点名称)判断是否存在对应的函数如startPage,如果不存在则执行default+操作名称:如defaultStart。

一个函数一个函数搞清楚之后,就知道整个处理流程是什么样了。首先创建一个public_html的文件,存放整个网站,然后读xml的节点,通过startElement和endElement调用dispatch进行处理。然后就是dispatch怎么调用具体的处理函数了。 到此为止,这个项目算是分析完了。

主要掌握的内容一个是python中使用SAX处理XML,另一个就是python中的函数的使用,比如getattr,传参数时的星号……

**python项目练习四:新闻聚合**

书中的第四个练习,新闻聚合。现在很少见的一类应用,至少我从来没有用过,又叫做Usenet。这个程序的主要功能是用来从指定的来源(这里是Usenet新闻组)收集信息,然后讲这些信息保存到指定的目的文件中(这里使用了两种形式:纯文本和html文件)。这个程序的用处有些类似于现在的博客订阅工具或者叫RSS订阅器。

先上代码,然后再来逐一分析:

这个程序,首先从整体上进行分析,重点部分在于NewsAgent,它的作用是存储新闻来源,存储目标地址,然后在分别调用来源服务器(NNTPSource以及SimpleWebSource)以及写新闻的类(PlainDestination和HTMLDestination)。所以从这里也看的出,NNTPSource是专门用来获取新闻服务器上的信息的,SimpleWebSource是获取一个url上的数据的。而PlainDestination和HTMLDestination的作用很明显,前者是用来输出获取到的内容到终端的,后者是写数据到html文件中的。

有了这些分析,然后在来看主程序中的内容,主程序就是来给NewsAgent添加信息源和输出目的地址的。

这确实是个简单的程序,不过这个程序可是用到了分层了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu报错E: 无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用)E: 无法对目录 /var/cache/apt/archives/

ubuntu报错: E: 无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/cache/apt/archives/ 加锁 解决方法: 运行: sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock

Python Day1

一、安装python windows 1.下载安装包https://www.python.org/downloads/ 2.安装 默认安装到C盘下 3.配置环境变量 右键计算机属性---高级系统设置---高级---环境变量---找到变量Path以;为分割加上C:\python34 Linux 原带python环境是2.7可以安装更高版本 1.下载安装…

火狐导cookie文件没反应_效率指南|实操区分FireFox火狐的国内版和国际版

Firefox分为了国内版、国际版,书签、历史记录、设置等不支持互相同步。本来想图个方便,在国内的互联网环境下,放弃了无法登录的Chrome,上车Firefox就是看中电脑、手机端(iPhone端不同步,国内Android没试过哈…

Struts2小结

Struts 2是在WebWork2基础发展而来的。 注意:struts 2和struts 1在代码风格上几乎不一样。 Struts 2 相比Struts 1的优点: 1、在软件设计上Struts 2 没有像Struts 1那样跟Servlet API 和 struts API 有着紧密的耦合。 Struts 2的应用可以不依赖于Servlet…

linux查看关键词前后几行内容

查看filename文件含有key所在行前10行内容 cat filename | grep key -B 10 查看filename文件含有key所在行后10行内容 cat filename | grep key -A 10 查看filename文件含有key所在行前后10行内容 cat filename | grep key -C 10 -A 表示关键字之后,After-B 表示…

郭仁忠院士 | 新城市科学认知与智慧城市建设

来源:中国地理信息产业协会7月25日,郭仁忠院士在2019中国地理信息产业大会(珠海)高端论坛上作题为《新城市科学认知与智慧城市建设》的精彩报告。经郭院士授权,现将报告PPT发布分享,以飨读者。《崛起的超级…

python随机生成一个日期_Python中随机生成未来一个月内的一个随机的日期时间

该函数可以产生从当前日期时间开始到未来一个月内的一个固定时间 import random import timeit import time import datetime #该函数随机生成未来一个月内的日期 def generatorDatetime(): dateTime_stime.time() #获取当前时间戳 dateTime_sdatetime.datetime.fromtimestamp(…

优先队列priority_queue自定义比较函数

以一个例子进行说明&#xff0c;假设优先队列的每个元素是pair<int,int>&#xff0c;我需要自定义一个用于pair<int,int>比较的函数&#xff1a; decltype返回该变量的类型 bool cmp(pair<int,int>& a, pair<int,int>& b){return a.second&g…

是否顺应互联网大脑的发育趋势决定科技企业兴衰

来源&#xff1a;今日头条前言&#xff1a;本文摘录自2019年7月中信出版社出版的《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》为什么谷歌、脸书、亚马逊、阿里巴巴、腾讯等互联网企业发展得如此迅速&#xff0c;成为世界科技巨头&#xff1f;科大讯飞、商汤科技、…

sql 两个表列包含_Oracle数据库扩展语言PL/SQL之运算符

【本文详细介绍了Oracle数据库扩展语言PL/SQL的运算符&#xff0c;欢迎读者朋友们阅读、转发和收藏&#xff01;】1 基本概念运算符是一个符号&#xff0c;告诉编译器执行特定的数学或逻辑操作。 PL/SQL 语言有丰富的内置运算符&#xff0c;运算符提供的以下几种类型&#xff1…

进程同步,异步,互斥

同步 同步亦称直接制约关系&#xff0c;它是指为完成某种任务而建立的两个或多个进程&#xff0c;这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。一个进程的执行依赖于另一个协作进程的…

麦肯锡:企业数字化转型不要被技术“绑架”

来源&#xff1a;澳财网随着技术带动流程的改善和数字化时代的带来&#xff0c;平台经济日益兴起&#xff0c;视频租赁、电影、实体零售、广告和媒体、数据存储、出租车行业、餐馆和外卖、酒店和其他行业开始出现颠覆。在这个过程中&#xff0c;想客户之所想&#xff0c;急客户…

python paramiko invoke_shell_Python,paramiko,invoke_shell和丑陋的字符

当我运行以下Python代码时&#xff1a;import workflowimport consoleimport paramikoimport timestrComputer server.comstrUser userstrPwd passwdclient paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())client.connect(hostnamestrC…

js中函数的使用方式及回调函数

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title></title> <script type"text/javascript"> /** * 函数的使用方式 * 当作普通函数调用 …

TestAndSet实现互斥锁

包含lock函数和unlock函数。 首先定义一个全局变量flag&#xff0c;flag1表明该锁已经锁住&#xff0c;flag0表明锁没有锁住。 lock函数里通过while循环不断检测flag是否等于1&#xff0c;如果等于1就一直循环并将flag设置为1。unlock()方法就将flag置为0。 static int flag…

python google drive api_使用google-drive-api python获取文件的链接

我已经与Google Drive Api合作了一段时间,但找不到一种实用的方法来获取Drive上文件视图的链接.有创建文件夹并返回其ID的函数,但是我还需要返回仅用于查看的链接.谢谢&#xff01;def create_folder(folder_nameno_name, parent_id):data {name: folder_name,mimeType: appli…

世界最大全脑神经元三维数据库建成

来源&#xff1a;科技日报神经元作为大脑的基础组成单元&#xff0c;对研究大脑的结构和功能至关重要。以往&#xff0c;受神经元标注和成像技术的局限&#xff0c;得到的图像有较高的噪声和不均匀的信号。9月15日&#xff0c;在东南大学举办的2019神经元重建及应用国际研讨会中…

Thinkphp js、css压缩类minify

说明&#xff1a;Minify 是用PHP5开发的应用&#xff0c;通过遵循一些Yahoo的优化规则来提高网站的性能。它会合并多个CSS或者JavaScript文件&#xff0c;移除一些不必要的空格和注释&#xff0c;进行gzip压缩&#xff0c;并且会设置浏览器的缓存头。Minify 在设计上和Yahoo的 …

python rgb led控件_用树莓派实现RGB LED的颜色控制——Python版本

Python代码&#xff1a;#!/usr/bin/env python#*********************************************************#File Name &#xff1a;rgb.py#Author &#xff1a;Jason Dai#Date : 2015/02/04#*********************************************************import RPi.GPIO as GP…

新iPhone的黑科技:UWB技术揭秘!

来源&#xff1a;鲜枣课堂9月11日&#xff0c;苹果公司秋季发布会在乔布斯剧院举行。以iPhone 11为代表的一系列新品揭开了神秘的面纱&#xff0c;与“果粉”见面。新iPhone的特点和参数&#xff0c;相信大家通过各大媒体的介绍已经有所了解。不过有一个细节&#xff0c;不知道…