我的需求很简单,就是统计一下我的安装脚本执行的次数和时间,格式是这样的install_times:1|install_times:2018-09-0315:58:46install_times:2|install_times:2018-09-0315:58:50install_times:3|install_times:2018-09-0315:58:54首先我需要判断一下文件是否为空,我开始是这样写的importtimeimportosfile_list
系统 2019-09-27 17:56:10 2019
Virtualenv我们都知道Python开发项目很容易,项目也经得起工业级别考验。很多开发者都会习惯用Python开发项目,但是由于我们每个项目情况都有些不一样。比如今天可能用的是Django1.8,明天可能用的是Django2.1。如果不进行环境隔离全局安装就会导致包的冲突,依赖不同,出现问题。这个时候每个应用都需要一套「独立」的Python运行环境。而Virtualenv就是拿来为应用创建这一套「隔离」的Python运行环境。首先用pip安装pipi
系统 2019-09-27 17:55:33 2019
效果技术栈python3requestsredisechart源码地址https://github.com/MasakiOvO/...python需要安装的库requests,BeautifulSoup,redis,django思路两个程序。一个程序负责爬取用户关注和粉丝列表,并把用户名存入set另一个程序负责根据用户名获取详细信息,存入hash维护两个列表1.已爬用户2.未爬用户第一个程序的流程:当未爬set不为空时:执行如下操作:每次从未爬取列表中取出
系统 2019-09-27 17:55:04 2019
利用上一篇的框架,再写了个翻转棋的程序,为了调试minimax算法,花了两天的时间。几点改进说明:拆分成四个文件:board.py,player.py,ai.py,othello.py。使得整个结构更清晰,更通用,更易于维护。AI的水平跟minimax的递归深度,以及评价函数有关。基于此,我把minimax和评价函数都放到AI类里面AIPlayer使用了多重继承。继承了Player与AI两个类Game类中把原run函数里的生成两个玩家的部分提出来,写成一个
系统 2019-09-27 17:54:46 2019
函数:endswith()作用:判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型相关函数:判断字符串开头startswith()一、函数说明语法:string.endswith(str,beg=[0,end=len(string)])string[beg:end].endswith(str)参数说明:string:被检测的字符串str:指定的字符或者子字符串(可以使用元组,会逐一匹配)beg:设置字符串检测的起始位置(可选,从左数起)end:设置
系统 2019-09-27 17:50:51 2019
来源:chestnut-egg链接:https://www.cnblogs.com/chestnut-egg/p/9302238.html自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式。代码已上传至GitHub一、准备工作1.扫雷游戏我是win10,没有默认的扫雷,所以去扫雷网下载http://www.saolei.net/BBS/2.python3我的版本是python3.6.13.p
系统 2019-09-27 17:50:48 2019
wtfPython是github上的一个项目,作者收集了一些奇妙的Python代码片段,这些代码的输出结果会和我们想象中的不太一样;通过探寻产生这种结果的内部原因,可以让我们对Python里的一些细节有更广泛的认知。1.字典键的隐式转换some_dict={}some_dict[5.5]="Ruby"some_dict[5.0]="JavaScript"some_dict[5]="Python"输出如下:>>>some_dict{5.0:"Python",
系统 2019-09-27 17:50:47 2019
迭代器和可迭代对象由for循环的内部原理说起list01=[2,434,5,6,8]foriteminlist01:print(item)大家有没有想过list类型对象为什么可以被for循环呢?能够被for循环的条件是:它是可迭代对象(iterable)。那么什么是可迭代对象呢?参考一下内置函数item()的官方说明文档:iter(object[,sentinel])返回一个iterator对象。根据是否存在第二个实参,第一个实参的解释是非常不同的。如果没
系统 2019-09-27 17:50:23 2019
简单生成器有许多优点。生成器除了能够用更自然的方法表达一类问题的流程之外,还极大地改善了许多效率不足之处。在Python中,函数调用代价不菲;除其它因素外,还要花一段时间解决函数参数列表(除了其它的事情外,还要分析位置参数和缺省参数)。初始化框架对象还要采取一些建立步骤(据TimPeters在comp.lang.python上所说,有100多行C语言程序;我自己还没检查Python源代码呢)。与此相反,恢复一个生成器就相当省力;参数已经解析完了,而且框架对
系统 2019-09-27 17:49:57 2019
目录Python并发编程05/死锁/递归锁/信号量/GIL锁/进程池/线程池1.昨日回顾2.死锁现象与递归锁2.1死锁现象2.2递归锁3.信号量4.GIL全局解释器锁4.1背景4.2为什么加锁5.GIL与Lock锁的区别6.验证计算密集型IO密集型的效率6.1IO密集型6.2计算密集型7.多线程实现socket通信7.1服务端7.2客户端8.进程池,线程池Python并发编程05/死锁/递归锁/信号量/GIL锁/进程池/线程池1.昨日回顾#生产者消费者模型
系统 2019-09-27 17:49:06 2019