最近,我们老大要我写一个守护者程序,对服务器进程进行守护。如果服务器不幸挂掉了,守护者能即时的重启应用程序。上网Google了一下,发现Python有很几个模块都可以创建进程。最终我选择使用subprocess模块,因为在Python手册中有这样一段话:Thismoduleintendstoreplaceseveralother,oldermodulesandfunctions,suchas:os.system、os.spawn*、os.popen*、po
系统 2019-09-27 17:50:33 2043
Python2的字符串有两种:str和Unicode,Python3的字符串也有两种:str和Bytes。Python2的str相当于Python3的Bytes,而Unicode相当于Python3的Bytes。Python2里面的str和Unicode是可以混用的,在都是英文字母的时候str和unicode没有区别。而Python3严格区分文本(str)和二进制数据(Bytes),文本总是Unicode,用str类型,二进制数据则用Bytes类型表示,这
系统 2019-09-27 17:50:25 2043
单例模式单例模式(SingletonPattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个AppConfig的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建AppConfig对象的实例,这就导致系统中存在多个AppConfig的实
系统 2019-09-27 17:49:13 2043
一、对列表(list)进行排序推荐的排序方式是使用内建的sort()方法,速度最快而且属于稳定排序复制代码代码如下:>>>a=[1,9,3,7,2,0,5]>>>a.sort()>>>printa[0,1,2,3,5,7,9]>>>a.sort(reverse=True)>>>printa[9,7,5,3,2,1,0]>>>b=['e','a','be','ad','dab','dbc']>>>b.sort()>>>printb['a','ad','be'
系统 2019-09-27 17:48:22 2043
因为盘搜搜索出来的链接有很多已经失效了,影响找数据的效率,因此想到了用爬虫来过滤出有效的链接,顺便练练手~这是本次爬取的目标网址http://www.pansou.com,首先先搜索个python,之后打开开发者工具,可以发现这个链接下的json数据就是我们要爬取的数据了,把多余的参数去掉,剩下的链接格式为http://106.15.195.249:8011/search_new?q=python&p=1,q为搜索内容,p为页码以下是代码实现:import
系统 2019-09-27 17:48:14 2043
有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。如果不用with语句,代码如下:file=open("/tmp/foo.txt")data=file.read()file.close()这里有两个问题。一是可能忘记关闭文件句柄;二是文件读取数据发生异常,没有进行任何处理。下面是处理异常的加强版本:file
系统 2019-09-27 17:48:03 2043
写python协程时使用gevent模块和queue模块可以大大提高爬虫速度。在同时爬取多个网站时,原来用for循环一个网站一个网站按循序顺序爬,就像先烧饭后烧菜,两个步骤异步进行。使用多协程可以让爬虫自己选择爬取顺序,就像边烧饭边烧菜,两个步骤同步进行,速度自然快了。不多说了,来看下代码吧:fromgeventimportmonkeymonkey.patch_all()#打上多协程布丁,下面的程序就可以执行多协程了importrequests,geven
系统 2019-09-27 17:47:59 2043
上集回顾上一节学习了转义字符的用法,作为基础内容一定要记忆好,多看几遍。提问输入和打印结果没有问题,重点是input语句的使用,input后面跟着的字符串是用来提示用户输入而打印再屏幕上的,用户输入的内容存放在前面的变量中,然后可以对这个保存着用户输入的变量进行操作。主语print语句中end=‘’的用法,意思是不让用换行符跑到下一行,也就是直接再这一行输入内容。直接把提示内容放在input语句中也能实现同样的功能。巩固练习1、网上查input的功能查询得
系统 2019-09-27 17:47:20 2043
defget_standard_str(s):lis=list(s)lis.sort()s="".join(lis)returnsstop_word=""dict1={}forlineiniter(input,stop_word):standard_str=get_standard_str(line)ifstandard_strindict1:dict1[standard_str].append(line)else:dict1[standard_str]=
系统 2019-09-27 17:46:11 2043
之前自己也遇到过一次,这段时间在群里也遇到过几次的一个问题用python2.7写的一段程序,里面用到了字典推导式,但是服务器版本是python2.6,无法运行。今天查了下关于DictComprehensions,在pep274中有明确的说明。http://legacy.python.org/dev/peps/pep-0274/复制代码代码如下:ImplementationAllimplementationdetailswereresolvedinthePy
系统 2019-09-27 17:38:19 2043