下面就是今天下午的研究成果。发布系统需要响应用户的中断请求,需要在GET方法中杀掉由subprocess派生的子进程,刚开始直接用os.kill发现子进程的子进程无法kill,谷歌了一些,发现kill可以干掉进程组,于是测试,但是默认情况下,subprocess派生的进程组和主程序,也就是我的web.py进程是在一个进程组里的,这要是kill了,那就调的了。继续翻google,看subprocess的document时发现这个变量:subprocess.C
系统 2019-09-27 17:56:58 2646
在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任意字符,*代表0-无穷个,比如说要分别匹配某个目录下的子目录:>>>importre>>>match=re.match(r"/(.*)/(.*)/(.*)/","/usr/local/bin/")>>>match.groups()('usr','local','bin')>>>比如像上面,使用(.*)就能很好的匹配,但如果字符串中里面即有TAB键,又有空格,要匹配出来,如何匹配呢?比如说像"Hell
系统 2019-09-27 17:56:22 2646
n叉数的前序遍历classSolution:defpreorder(self,root:'Node')->List[int]:order=[]ifroot!=None:order.append(root.val)foriinrange(len(root.children)):node=root.children[i]order+=self.preorder(node)returnorder类中的函数递归调用,要使用self.preorder()调用
系统 2019-09-27 17:55:13 2646
插入排序是一种简单直观且稳定的排序算法。将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。基本思想:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的列表中适当位置上,直到全部插入完为止。将排序的数组分成两部分:第一部分已排好序的元素,第二部分包含即待插入元素。在排序过程中,分别从待插入元素中取出元素,插入到已排好序的元素列表中。分类:直接插入排序,二分插入排序(又称折半插入排序)二分插入排序在后面的文章会写到。直接插
系统 2019-09-27 17:51:58 2646
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。简单生成器
系统 2019-09-27 17:50:14 2646
最近在做项目的时候经常会用到定时任务,由于我的项目是使用Java来开发,用的是SpringBoot框架,因此要实现这个定时任务其实并不难。后来我在想如果我要在Python中实现,我要怎么做呢?一开始我首先想到的是TimerTimer这个是一个扩展自threading模块来实现的定时任务。它其实是一个线程。#首先定义一个需要定时执行的方法>>>defhello():print("hello!")#导入threading,并创建Timer,设置1秒后执行hel
系统 2019-09-27 17:56:26 2645
当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。模拟登录是定向爬虫制作中一个必须克服的问题,只有这样才能爬取到更多的内容。实现微博登录的方法有很多,一般我们在模拟登录时首选WAP版。因为PC版网页源码中包括很多的js代码,提交的内容也更多,不适合机器模拟登录。我们实现微博登录的大体思路是这样的:用抓包工具把正常登录时要提交的字段都记录下来;模拟提交这些字段;判断是否登录成功;原理很简单,让我们一步一步来实现吧。一.抓包利
系统 2019-09-27 17:53:11 2645
Flaskapp配置配置内容:文件夹路径,运行的文件类型,文件大小限制fromflaskimportFlaskFILE_FOLDER='path/to/file_folder'ALLOWED_EXTENSIONS=set(['png','jpg','jpeg'])app=Flask(__name__)app.config['UPLOAD_FOLDER']=FILE_FOLDERapp.config['MAX_CONTENT_LENGTH']=16*1024
系统 2019-09-27 17:52:33 2645
用python另一个抢票神器,你get到了吗?2017年时间飞逝,转眼间距离2018年春节还有不到1个月的时间,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好?难以想象的数据,预示着今年春运回程和返程车票购买难度将进一步加大…抢购车票怕是比李白跨越“蜀道”的难度还大哦~当你想查询一下火车票信息的时候,还在为打开无响应的12306官网和广告n秒的APP吗而懊恼吗?不如用Python写一个命令行版的火车票查看器,只要在命令行敲一行命令就能获得你想
系统 2019-09-27 17:52:28 2645
一、匹配目标文件中所有以https?://开头,以.jpg|.png|.jpeg结尾的字符串二、尝试过程1)自然想到正则表达式r'(https?://.*?.jpg|https?://.*?.png|https?://.*?.jpeg)简化书写为r'(https?://.*?\.(?:jpg|png|jpeg)匹配结果:['http://sdsdsdadadsdsdsddsdsdawwii,https://sdsdoijcjz.jpg']发现结果并非我们想
系统 2019-09-27 17:46:00 2645
在Python2中datetime对象没有timestamp方法,不能很方便的生成epoch,现有方法没有处理很容易导致错误。关于Epoch可以参见时区与Epoch0Python中生成Epochfromdatetimeimportdatetime#python3datetime.now().timestamp()#python2importtimetime.mktime(datetime.now().timetuple())#为了兼容python2和3,该
系统 2019-09-27 17:38:23 2645
类型转换魔法类型转换魔法其实就是实现了str、int等工厂函数的结果,通常这些函数还有类型转换的功能,下面是一些相关的魔法方法:•__int__(self)•转换成整型,对应int函数。•__long__(self)•转换成长整型,对应long函数。•__float__(self)•转换成浮点型,对应float函数。•__complex__(self)•转换成复数型,对应complex函数。•__oct__(self)•转换成八进制,对应oct函数。•__
系统 2019-09-27 17:37:52 2645
00.异常会根据错误自动被出发,也能由代码出发和截获。异常由四个语句处理。01.异常的函数try/except:捕捉由Python或你引起的异常并恢复try/finally:无论异常是否发生,执行清理行为raise:手动在代码中触发异常assert:有条件地在程序代码中触发异常with/as:实现环境管理器02.用户定义的异常能够通过类编写,它继承自一个内置的异常类:通常这个类的名称叫做Exception03.try/finally:是否有问题都会执行fi
系统 2019-09-27 17:57:33 2644
问题可以转换为:求一条垂直于x轴或平行于y轴的直线与该线的交点importnumpyasnpimportshapely.geometryasSG#某条线list(zip(x,y))为线上的坐标点的listline=SG.LineString(list(zip(x,y)))#(1,0)到(1,100)两点的连线yline=SG.LineString([(1,0),(1,100)])#or(0,1)到(100,1)两点的连线xline=SG.LineStrin
系统 2019-09-27 17:57:04 2644
strip()s.strip(rm)删除s字符串中开头、结尾处,位于rm删除序列的字符s.lstrip(rm)删除s字符串中开头处,位于rm删除序列的字符s.rstrip(rm)删除s字符串中结尾处,位于rm删除序列的字符声明:s为字符串,rm为要删除的字符序列.只能删除开头或是结尾的字符或是字符串。不能删除中间的字符或是字符串。(rm=‘asd’,asd不分顺序。)注意:当rm为空时,默认删除空白符(包括’\n’,‘\r’,‘\t’,’')这里的rm删除
系统 2019-09-27 17:51:59 2644