
python
feiyy404
选择往往比努力更重要。
展开
-
关于康熙部首导致的字典查询异常
这篇文章的起因是一个报错,我们来看看:a = {"⽐赛阶段": "16强"}print(a["比赛阶段"])运行结果:为什么查询不出来呢?难道两个比赛阶段不一样?我们进一步测试一下:print("⽐赛阶段" == "比赛阶段")运行结果是:False难道说是其中一个包含了不可见的零宽字符?我们来看看两个字符串的长度:print(len("⽐赛阶段") == len("比赛阶段"))运行答案是 True可以看到,这两个字符串都是4个汉字,说明没有零宽字符。那么为什么他们不一样呢原创 2020-05-21 00:20:43 · 832 阅读 · 3 评论 -
心跳粘包的解决
在一个线程同时发送数据和心跳的时候, 发现数据和心跳(b"")数据之间粘包了。问题在于 ts 字符串里面多了 \x81\x00然后发现这貌似就是我发送的心跳包 b"" …心跳是 30s 发一次, 在对性能影响不大的前提下,发送心跳的时候加上线程锁即可。更新时间: 20191113...原创 2019-11-13 14:57:07 · 357 阅读 · 0 评论 -
关于python异常的合理抛出
当需要抛出Python异常的时候,我们往往处理不好。这里总结一些方法。一般的做法try: do_something()except: do_cleanup()这样的处理会直接把内部异常吃掉,当有问题/Bug时,会很难处理,所以不推荐。直接打印错误try: do_something()except Exception as e: do_cleanup() print(e)...转载 2019-02-12 23:30:22 · 1183 阅读 · 0 评论 -
python判断一个字符串是否包含子串的方法
使用成员操作符 in使用 string 模块的find()/rfind() 方法仅限于在python2中使用使用string的index()/rindex()方法index()/rindex()方法跟find()/rfind()方法一样,只不过找不到子字符串的时候会报一个ValueError异常。使用字符串对象的find()/rfind() 、index/rindex() 和co...转载 2019-02-17 23:45:07 · 9399 阅读 · 0 评论 -
Python: Logging TypeError: not all arguments converted during string formatting
https://stackoverflow.com/questions/12843099/python-logging-typeerror-not-all-arguments-converted-during-string-formatting转载 2019-02-11 22:59:49 · 1283 阅读 · 0 评论 -
Python中的logging模块使用
转载: https://blog.youkuaiyun.com/liuchunming033/article/details/39080457日志级别的说明日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL。DEBUG:详细的信息,通常只出现在诊断问题上INFO:确认一切按预期运行WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些...转载 2019-02-11 10:41:15 · 278 阅读 · 0 评论 -
python-web 字典的使用总结
# 从字典中一次性取出指定一组key对应的value from operator import itemgetter from string import ascii_lowercase, ascii_uppercase d = list(zip(ascii_lowercase[:10], ascii_uppercase[-10:])) d = dict(d) keys = ['...转载 2019-01-22 17:40:38 · 1025 阅读 · 0 评论 -
正确使用 Multiprocessing 的姿势
import multiprocessing as mp # 要执行的任务函数 def task(pid, name): print("pid:", pid, "name:", name) return str(pid) + ":" + name def main(): pool = mp.Pool() cpus = mp.cpu_c...转载 2019-01-22 11:29:29 · 324 阅读 · 0 评论 -
使用 Python 读取 excel 实例
安装包安装python官方Excel库–>xlrd操作准备 excel 表获取一个文件对象ExcelFile = xlrd.open_workbook(r"/home/python/Desktop/esdemo/demo.xlsx")获取目标文件的 sheet 名sheet_list = ExcelFile.sheet_names()指定读取某...原创 2018-08-27 14:30:13 · 1059 阅读 · 0 评论 -
python 中 __all__ 的用法
all 被用来在模块级别暴露接口 __all__ = ['foo', 'bar']这么做的好处:提供了哪些是公开接口的约定python 没有语言原生的可见性控制,而是需要靠一套大家自觉遵守的“约定”工作。all 是对于模块公开接口的一种约定,比起下划线,all 提供了 暴露接口用的“白名单”。一些不以下划线开头的变量(比如从其他地方 import 到当前模块的成员)可以同样...转载 2018-08-06 21:24:02 · 898 阅读 · 0 评论 -
在python程序中调用shell命令
通过os模块创建子进程运行外部程序 方法只是返回外部程序的运行结果import osprint(os.system("ls"))通过 popen 方法popen 方法不仅仅返回结果 还返回一个类文件对象。通过调用该对象的read() 或者是 readlines() 方法可以读取输出内容。os.popen(command,mode)举例:import osoutput = o...转载 2019-02-19 09:41:15 · 1329 阅读 · 0 评论 -
在python项目中生成requirements.txt文件
前言我们为什么要使用requirements.txt呢?主要使用目的:任何应用程序通常需要设置安装所需并依赖一组类库来满足工作要求。要求文件是指定和一次性安装包的依赖项具体一整套方法。requirements.txt文件格式:requests==1.2.0 Flask==0.10.1...这样我们就可以安装requirements.txt依赖pip install -r req...转载 2019-02-19 09:53:45 · 936 阅读 · 0 评论 -
尝试使用 Python 的 pdb 调试工具
更多说明进入 https://docs.python.org/3/library/pdb.html#module-pdb 查看更加具体的用法实例与说明def func(): print("enter func()")a = 1b = 2import pdbpdb.set_trace()func()c = 3print(a+b+c)p 是打印变量的意思 相当于 p...原创 2019-10-09 16:48:18 · 151 阅读 · 0 评论 -
使用 Python 实现手动的垃圾回收
说明在 C 语言里,我们需要使用 free 去手动释放内存,在 Python 里面,我们可以使用 del 对象 + gc.collection 来触发垃圾回收。代码实现import gcimport osimport psutildef show_memory_info(hint): """ 定义一个显示内存情况的函数 :param hint: :...原创 2019-10-09 16:33:09 · 4980 阅读 · 0 评论 -
通过显示当前 python 程序占用的内存大小来比较生成器和迭代器
# 显示当前 python 程序占用的内存大小import osimport psutil as psutildef show_memory_info(hint): # 获取当前进程的进程号 pid = os.getpid() # psutil 是一个获取系统信息的库 p = psutil.Process(pid) info = p.memor...原创 2019-10-08 14:46:48 · 616 阅读 · 1 评论 -
python 树状嵌套结构的实现思路
原始数据原始数据大致是这样子的:每条数据中的四个数据分别是 当前节点名称,节点描述(指代一些需要的节点属性),源节点(即最顶层节点),父节点(当前节点上一层节点)。datas = [ ["root", "根节点", "root", None], ["node1", "一级节点1", "root", "root"], ["node2", "一级节点2", "root",...原创 2019-07-17 17:59:40 · 2241 阅读 · 0 评论 -
python-web: 常见时间处理函数
获取所在月份第一天的开始时间点def get_month_begin_time(time=None): """ 获取 time 所在月份的第一天的开始时间点 :param time: :return: """ if time is None: time = datetime.datetime.now() return tim...原创 2019-07-06 09:46:56 · 375 阅读 · 0 评论 -
python-web: 缓存实现
缓存的原因缓存是一种将定量数据加以保存以备迎合后续请求的处理方式,旨在加快数据的检索速度。通过缓存机制将数据放到字典中,如果下次需要的时候可以直接到字典中获取。实现一个缓存类并测试class MyCache(object): def __init__(self): self.cache = {} self.max_cache_size = 10 ...转载 2019-07-05 12:24:53 · 1523 阅读 · 1 评论 -
python项目中集成sentry上报
登录注册登录Sentry官网(https://sentry.io/)注册账号创建项目配置本地的客户端首先通过 pip 安装 Sentry SDKpip install raven --upgrade 然后初始化客户端:from raven import ClientDSN = 'https://****@sentry.io/****'client = Client(D...转载 2019-07-10 10:52:16 · 3598 阅读 · 0 评论 -
Python黑魔法--异步IO(asyncio)协程 (三)
接: https://blog.youkuaiyun.com/Enjolras_fuu/article/details/83869864不同线程的事件循环很多时候,我们的事件循环用于注册协程,而有的协程需要动态的添加到事件循环中。一个简单的方式就是使用多线程。当前线程创建一个事件循环,然后在新建一个线程,在新线程中启动事件循环。当前线程不会被block。import timeimport asynci...原创 2019-03-14 14:17:57 · 508 阅读 · 0 评论 -
深刻理解Python里面的元类(metaclass)
类也是对象在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立:class Fu(object): passfu = Fu()print(fu)运行结果:<__main__.Fu object at 0x7f995f338b38>Process finished with exit code 0但是,...转载 2018-05-30 08:58:23 · 429 阅读 · 0 评论 -
with与上下文管理器
with open('output.txt','w') as f: f.write('Hello World')上面的代码往output文件写入了Hello world字符串,with语句会在执行完代码块后自动关闭文件。这里无论写文件的操作成功与否,是否有异常抛出,with语句都会保证文件被关闭。如果不用with,我们可能要用下面的代码实现类似的功能:try: f ...转载 2018-05-29 20:48:10 · 439 阅读 · 0 评论 -
caffe for windows的python接口学习(4):训练模型
暂时不进行可视化,我们只想得到一个最终训练的model,可以用以下代码实现:import caffecaffe.set_device(0)caffe.set._mode_cpu()solver=caffe.SGDSolver('E:/CaffeDev/caffe-master/data/mypython1/solve.prototxt')solver.solve()之后会总结在caffe上直原创 2016-12-03 15:52:09 · 859 阅读 · 2 评论 -
python简易图片处理(2):环境配置以及Anaconda相关知识
基于python脚本语言开发的数字图像处理包很多,比如说PIL,Pillow,openCV,scikit-image等。对这些包进行一个简单的比较,PIL和Pillow只提供最基础的数字图像处理,功能有限;openCV实际上是一个C++库,只是提供了python的接口,更新速度非常慢。 scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,正好与matlab转载 2016-12-01 20:40:23 · 3913 阅读 · 0 评论 -
python简易图片处理(1):打开\显示\保存图片
一提到数字图像处理,可能大多数人会想到matlab,但是matlab有自身的一些缺点: 1.不开源,价格贵; 2.软件容量大。一般3GB以上,高版本甚至达到5GB以上。 3.只易做研究,不易转化成软件。因此,我倾向于学习python来进行图像的处理工作。要使用python,首先要先安装python,一般是在2.7版本以上,不管是在windows系统,还是在linux系统,安装工作都是非常简单的转载 2016-12-01 19:40:46 · 15650 阅读 · 0 评论 -
caffe for windows的python接口学习(3):生成以原始图片作为输入的配置文件
在caffe for windows的python接口学习(2)中,我们介绍了一种生成配置文件的方式。那种方式的前提是必须要先把原始图片转换成LMDB格式的文件才行。如果我们已经把原始图片做成了一个列表清单(txt文件,一行一张图片),则可以不用LMDB格式作为输入数据,可以直接用ImageData作为数据源输入,代码如下:from caffe import layers as L,params a转载 2016-12-01 18:23:29 · 753 阅读 · 0 评论 -
caffe for windows的python接口学习(2)生成配置文件
先验知识: (1)如何配置caffe for windows的python接口; (2)如何将图片转换成LMDB格式; (3)如何计算训练数据的均值文件。我们知道。Caffe是用C++语言写的,C++是一门相对比较复杂的语言,可能很多人不太熟悉,因此想用更为简单的脚本语言来实现。Caffe提供matlab和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得我们的学习更加快速,转载 2016-12-01 17:14:31 · 896 阅读 · 0 评论 -
caffe for windows的python接口学习(1):分析caffenet.py
首先我尝试在spyder中写caffe的配置文件,结果出现很多”看不懂“的错误。提示说在examples/pycaffe/caffenet.py中提供了一种直接在Python中编写网络的方法。所以我决定先尝试理解一下这个实例文件。首先是import:from __future__ import print_functionfrom caffe import layers as L,原创 2016-12-01 14:19:30 · 1346 阅读 · 0 评论 -
【caffe-Windows】的Python接口配置
参考:【caffe-Windows】微软官方caffe之 Python接口配置及图片生成实例 - 风翼冰舟的博客 - 博客频道 - youkuaiyun.com http://blog.youkuaiyun.com/zb1165048017/article/details/52980102caffe的python接口学习(1):生成配置文件 - denny402 - 博客园 http://www.cnblog转载 2016-12-01 13:26:49 · 2100 阅读 · 0 评论 -
python基础1-14
查看内置函数 dir(__builtins__)查看某个具体的函数 help(int)变量名就像我们现实社会的名字,把一个值赋值给一个名字时,ta会存储在内存中。不过python与大多数其他计算机语言的做法稍有不同,ta并不是把值存储在变量中,而更像是把名字贴在值的上面。所以有些python程序员会说“python”没有“变量”,只有“名字”。在使用变量之前,首先要对ta进行赋原创 2016-11-29 20:55:52 · 508 阅读 · 0 评论 -
caffe for windows的python接口学习(5):生成solver文件
转自:denny的学习专栏 caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫做solver.prototxt的文件里面。参数设置需要遵循一些计算。假如我们有50000个训练样本,batch_size设为64,那么需要迭代50000/64=782次才处理完一次全部的样本。我们把处理完一次所有的样本,称之为一代,即epoch。所以,这里的test_interval设置为782,转载 2016-12-03 18:34:47 · 738 阅读 · 0 评论 -
Head Fiest Python读书笔记
1.按下Alt+P,可以一退回到IDLE之前输入的代码语句,或者按下Alt+N可以移动到下一个代码语句(如果有的话)。可以利用这两个按键组合在IDLE中已经输入的所有代码之间转换,根据需要重新执行其中的任何语句代码。2.很多其他的编程语言坚持要求代码中使用的每一个标识符都必须声明有类型信息。但是对Python并不适用:标识符只是名字,可以指示某个类型的数据对象。 可以把Python列表想象成一个高原创 2017-08-09 23:12:55 · 415 阅读 · 0 评论 -
windows下pygame的安装
不得不说自己真的是很小白,最近在看一本写给小孩子看的编程书,里面讲到用pygame来实现一个小游戏,然后我配置这个东西搞了一天······主要之前的python2和3都有装,还是放在SPSS下的,我也是有点晕···重新卸载又安装,可以运行啦~ 1.下载Python(略过) 2.下载pygame下载地址点这里需要特别注意的是,下载的pygame版本必须和你的Python版本一致才可以。之前用了Py原创 2017-08-10 19:35:29 · 771 阅读 · 0 评论 -
对生成器和迭代器的理解(3)
生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,我们可以采用更简便的语法,即生成器(generator)。生成器是一类特殊的迭代器。创建生成器方法1要创建一个生成器,有很多种方法。第...转载 2018-05-13 20:58:03 · 296 阅读 · 0 评论 -
对生成器和迭代器的理解(2)
什么是迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。什么是集合元素list、tuple、str等类型的数据什么是迭代可以对list、tuple、str等类型的数据使用for…in…的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。...转载 2018-05-13 20:26:59 · 339 阅读 · 0 评论 -
对生成器和迭代器的理解(1)
迭代器协议迭代器协议是指:对象需要提供next方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 。可迭代对象就是:实现了迭代器协议的对象 。协议是一种约定,可迭代对象实现迭代器协议。Python的内置工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。我们可以使用for循环来遍历list:for i in [...转载 2018-05-13 19:52:33 · 383 阅读 · 0 评论 -
Django框架models中的元选项(Meta)
Django默认生成的表名:应用名小写_模型类名小写可以通过在模型类中定义Meta类来修改表名:class Department(models.Model): """部门类""" name = models.CharField(max_length=20) create_date = models.DateField(auto_now_add=True) ...原创 2018-04-09 19:58:11 · 880 阅读 · 0 评论 -
Django中模型类的自定义管理器
什么情况下需要自定义模型管理器(1)修改管理器返回的原始数据集 (2)管理器类中添加额外的方法,帮我们操作模型类对应的数据表首先修改了class Department(models.Model): """部门类""" name = models.CharField(max_length=20) create_date = models.DateField(au...原创 2018-04-09 19:38:31 · 2522 阅读 · 0 评论 -
数据结构之广度优先算法的Python简单实现
问题描述,假设你经营着一家农场,需要寻找芒果销售商,以便将芒果卖给他。为此,我们的原则是先在一级朋友中查找,然后在二级朋友(朋友的朋友)、三级朋友(朋友的朋友的朋友)中查找。使用这种算法将搜遍你的人际关系网,直到找到芒果销售商,这就是广度优先搜索算法。 实现代码from collections import dequegraph = {}graph["you"] = ["alice...原创 2018-02-24 23:14:03 · 1032 阅读 · 0 评论 -
Python读书随笔
1、创建球对象时,并没有在size、color或是direction中填入任何内容。必须在创建对象之后填充这些内容。不过有一种方法可以在创建对象时设置属性,这称为初始化对象。2、Python中有一些魔法方法,这些只是在你创建类时Python自动包含的一些方法。Python程序员通常把它们叫做特殊方法(special method)。每个对象都内置了一个init()方法。如果你在类定义中没有加入自己的原创 2017-08-20 20:36:02 · 483 阅读 · 0 评论