python
文章平均质量分 52
junli_chen
这个作者很懒,什么都没留下…
展开
-
不用 Python 自带的 Dict 实现自己的 HashTable
这个题目其实源于很久之前的一次 Uber 面试,码工换工作无非就是刷 leetcode ,研究如何翻转二叉树之类的算法问题,所以头一次在电话里听到这道题的时候还是挺耳目一新的。当时顺利写出来了,也通过了电面,但觉得还是有不完善的地方,比如说代码不够 “Pythonic” 等,所以趁着周天晚上闲着无事,又拿出来写了写。HashTable 本身没啥好说的,中文叫”哈希表“或者”散列表“,具体翻译看教材编写者的个人喜好。众所周知这个数据结构用来存储”键-值“结构的数据,可以做到常数级时间复杂度的查找,在日常搬原创 2020-07-23 10:26:56 · 527 阅读 · 0 评论 -
Python os.system(command),这样执行的command命令,和主程序是异步的吗?
Python os.system(command),这样执行的command命令,和主程序是异步的吗?是同步执行的。尚未执行完成的情况下,下面的程序不会继续操作。看下面的例子即可:>>> import os>>> def test():... print '1111'... os.system('ping 127.0.0.1')... print '原创 2017-02-24 11:34:31 · 12351 阅读 · 0 评论 -
WSGI接口
了解了HTTP协议和HTML文档,我们其实就明白了一个Web应用的本质就是:浏览器发送一个HTTP请求;服务器收到请求,生成一个HTML文档;服务器把HTML文档作为HTTP响应的Body发送给浏览器;浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的转载 2017-04-07 17:56:24 · 303 阅读 · 0 评论 -
python 开源框架学习
1.xwebhttps://github.com/gaojiuli/xweb.git2.原创 2017-04-07 18:23:10 · 393 阅读 · 0 评论 -
python time\datatime\string直接转换
datetime的格式是:datetime.datetime(2014, 1, 5, 16, 47, 49)>>> import time>>> import datetimestring转换为datetime:>>> string = '2014-01-08 11:59:58'>>> time1 = datetime.datetime.strptime(strin转载 2016-11-01 19:52:55 · 10622 阅读 · 0 评论 -
浅析tornado协程运行原理
转载:http://xidui.github.io/2016/01/26/%E6%B5%85%E6%9E%90tornado%E5%8D%8F%E7%A8%8B%E8%BF%90%E8%A1%8C%E5%8E%9F%E7%90%86/?utm_source=tuicool&utm_medium=referral前言去年有一段时间一直在研究各种python协程框架,包括gevent,转载 2017-04-14 09:40:58 · 534 阅读 · 0 评论 -
vim插件配置
https://github.com/ma6174/vim原创 2017-03-30 15:28:02 · 371 阅读 · 0 评论 -
python 装饰器
装饰器:https://www.zhihu.com/question/26930016有位知友讲解的很清楚,容易理解。from t@gen.coroutinedef outer_coroutine(): before = time.time() coroutines = [get_url(url) for url in ['URL1', 'URL2', 'URL3']] resu原创 2017-04-14 15:06:33 · 310 阅读 · 0 评论 -
python采用pika库使用rabbitmq总结,多篇笔记和示例
这一段时间学习了下rabbitmq,在学习的过程中,发现国内关于Python采用pika库使用rabbitmq的资料很少,官网有这方面的资料,不过是都英文的。于是笔者结合自己的理解,就这方面内容写了一些示例,总共有七篇笔记,分享出来。笔记依次是循序渐进的,笔记内贴出的代码笔者都实际运行过,运行系统ubuntu 12.04,rabbitmq版本是2.7.1,python版本是2.7.3。转载 2017-04-14 15:18:17 · 803 阅读 · 0 评论 -
Python 使用requests发送POST请求
一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样:请求行 请求报头 消息主体HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编码方式。服务端通过是根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。具体的编码方式包括:application原创 2016-12-15 15:10:04 · 296524 阅读 · 5 评论 -
python数据如何保存到excel中
第一步:下载xlwt首先要下载xlwt,(前提是你已经安装好了Python)下载地址: https://pypi.python.org/pypi/xlwt/点击进去,找到下图内容下载第二个第二步:安装xlwt打开cmd,切换目录到你下载的文件地址输入python setup.py install,就安装成功了原创 2016-12-15 10:18:03 · 34398 阅读 · 2 评论 -
Python产生随机数(转)
随机整数:>>> import random>>> random.randint(0,99)21随机选取0到100间的偶数:>>> import random>>> random.randrange(0, 101, 2)42随机浮点数:>>> import random>>> random.random() 0.85415370477785668原创 2016-12-15 10:16:28 · 3835 阅读 · 0 评论 -
python如何判断对象是否为字符串或者其他类型
python通过isinstance这个内置函数来判断对象的类型。例如判断对象是否为字符串:s='abc'isString = ininstance(s,basestring)上面我们用basestring作为isinstance的第二个参数,basestring是str和unicode的超类(父类),也是抽象类,因此不能被调用和实例化,但可以被用来判断一个对象是否为str或原创 2016-11-17 20:23:14 · 27310 阅读 · 5 评论 -
python 获取当前月份月初日期和月末日期
使用time模块的time.localtime()获取当前日期,使用calendar模块calendar.monthrange的来获取指定月份的天数。即可得到月初日期和月末日期,代码如下:import calendarimport timeday_now = time.localtime()day_begin = '%d-%02d-01' % (day_now.tm_year, day_原创 2016-11-18 14:24:13 · 28806 阅读 · 1 评论 -
Python字典按值排序、包含字典的列表按字典值排序的方法
Python代码:#-*- encoding=utf-8 -*- import operator #按字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1)) print sorted_x #[(0, 0), (2,转载 2016-11-18 19:11:39 · 498 阅读 · 0 评论 -
Tornado web开发之简单文件上传
1、介绍我们知道,在web开发过程中,文件上传是经常用到的功能,比如上传附件,上传照片等下面我们来介绍一下利用tornado 来实现文件上传功能2.代码由于实现文件上传的表单很简单,只需要几行html,我们把他们直接嵌入到python代码中废话少说,直接上代码:#!/usr/bin/python#-*- encoding:utf-8 -*-import tornad转载 2016-12-12 09:41:51 · 2802 阅读 · 0 评论 -
Python 字符串与二进制串的相互转换
一个问题,在Python中,如何将一个字符串转换为相应的二进制串(01形式表示),并且能够将这个二进制串再转换回原来的字符串。一个简单版本def encode(s): return ' '.join([bin(ord(c)).replace('0b', '') for c in s])def decode(s): return ''.join([转载 2016-12-12 10:20:24 · 69608 阅读 · 1 评论 -
python get,post提交表单
# -*- coding: cp936 -*-import urllib2,urllib,sys"""使用GET在百度搜索引擎上查询在百度的搜索条中随便输入一些内容,会有w和cl两项构成GET串此例演示如何生成GET串,并进行请求."""url = "http://www.baidu.com/s"search = [('w','python'),('cl','3')]getSt原创 2016-12-12 11:35:06 · 2910 阅读 · 3 评论 -
Python时间戳转变为时间格式
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(X))>>> X=1480585800.00>>> print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(X))2016-12-01 17:50:00原创 2016-12-02 20:07:02 · 962 阅读 · 0 评论 -
Python 提交表单数的一点简单介绍How to submit a web form
今天我们花些时间来看下三种用python提交一个web表单的方法,因此,我们用搜索引擎duckduckgo.com以"python"为关键词进行搜索,然后将结果保存为一个HTML文件,我们用python自带的urllib模块和两个第三方包:requests 和mechanize.,我们用三个小脚本来进行测试.用urllib提交一个web表单我们开始需要用到urllib和urllib转载 2016-12-15 10:13:37 · 3271 阅读 · 0 评论 -
你真明白 Python 装饰器么?
装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多小白来讲,这个功能 有点绕,自学时直接绕过去了,然后面试问到了就挂了,因为装饰器是程序开发的基础知识,这个都 不会,别跟人家说你会Python, 看了下面的文章,保证你学会装饰器。1、先明白这段代码#### 第一波 ####def foo():转载 2017-04-22 17:21:52 · 534 阅读 · 0 评论 -
[python]json.loads 几种错误 解决方案
1、json.loadsPython错误:'utf8' codec can't decode byte ...由于需求,要用python读取网页返回json,并取得其中的数据但是却遇到以上编码的问题。终于找到了解决方案:我们只需要对字符串进行unicode化,忽略错误就行了~代码如下:[python]view plai原创 2017-08-29 19:07:03 · 14956 阅读 · 2 评论 -
Python envoy 模块源码剖析
Kenneth Reitz 是公认的这个世界上 Python 代码写得最好的人之一。抱着学习的心态,我阅读了 Reitz 写的 envoy 模块的源码,将笔记记录如下。介绍和 requests 模块一样,envoy 也是 Reitz 的作品,连官方描述都类似——Python Subprocesses for Humans。实际上,envoy 的核心代码非常少,总共只转载 2017-10-20 14:56:08 · 2380 阅读 · 0 评论 -
Python 中的黑暗角落(一):理解 yield 关键字
Python 是非常灵活的语言,其中 yield 关键字是普遍容易困惑的概念。此篇将介绍 yield 关键字,及其相关的概念。迭代、可迭代、迭代器迭代(iteration)与可迭代(iterable)迭代是一种操作;可迭代是对象的一种特性。很多数据都是「容器」;它们包含了很多其他类型的元素。实际使用容器时,我们常常需要逐个获取其中的元素。逐个获取元素转载 2017-10-21 15:34:01 · 2166 阅读 · 0 评论 -
Python 中的黑暗角落(二):生成器协程的调度问题
前作介绍了 Python 中的 yield 关键字。此篇介绍如何使用 yield 表达式,在 Python 中实现一个最基本的协程调度示例,避免 I/O 操作占用大量 CPU 计算时间。协程及其特点协程是一种特殊的子程序,它可以在特定的位置暂停/恢复(而不是像普通函数那样在逻辑上顺序执行);并且每当协程暂停时,调用者可以从协程中获取状态,决定调用者接下来的走向;以及每当协程转载 2017-10-21 15:34:45 · 675 阅读 · 0 评论 -
Python 中的黑暗角落(三):模块与包
如果你用过 Python,那么你一定用过 import 关键字加载过各式各样的模块。但你是否熟悉 Python 中的模块与包的概念呢?或者,以下几个问题,你是否有明确的答案?什么是模块?什么又是包?from matplotlib.ticker import Formatter, FixedLocator 中的 matplotlib 和 ticker 分别是什么?中间的句点是什么意思?fro转载 2017-10-21 15:35:25 · 540 阅读 · 0 评论 -
python实现redis分布式锁
#!/usr/bin/env python# coding=utf-8import timeimport redisclass RedisLock(object): def __init__(self, key): self.rdcon = redis.Redis(host='', port=6379, password="", db=1) se原创 2018-02-01 14:39:07 · 7849 阅读 · 1 评论 -
如何理解Python装饰器?
Python 装饰器使用非常地简单。任何会使用 Python 函数的人都可以学习使用装饰器:Python123@somedecoratordef some_function(): print("Check it out, I'm using decorators!")但是如何写装饰原创 2018-01-25 15:16:30 · 741 阅读 · 0 评论 -
Python使用装饰器和线程限制函数执行时间的方法
前言: (不想看废话的可以直接copy尾部的代码) 在八月上旬的时候,曾经写过一个多线程爬虫。程序在运行时经常莫名的卡死。这令我很是费解,后来才发现,是在请求对方资源时,服务器长时间未返回完数据。导致IO阻塞。 其实不只是爬虫,很多时候一个函数很可能因为某种不可预知的事情,而有时很可能会卡在某一处,继而函数无法继续执行下去。导致拥塞。 此时,我们自然而然的会想到如果能写一个装转载 2018-01-25 15:36:07 · 4144 阅读 · 9 评论 -
python多线程 多进程
多进程与多线程我们都知道,操作系统中所有的程序都是以进程的方式来运行的,或者说我们把运行着的程序称为进程(Process)。例如运行记事本程序就是启动一个记事本进程,运行两个记事本就是启动两个记事本进程。很多时候,进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”转载 2018-02-01 18:55:57 · 1267 阅读 · 0 评论 -
python使用json序列化datetime类型问题处理
使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码:# -*- coding: cp936 -*-from datetime import datetimeimport jsonif __name__=='__main__': now = datetime.now() json.dumps({'now':now})运行会出现下面的错原创 2017-09-29 13:38:10 · 5556 阅读 · 0 评论 -
python json.dumps 中的ensure_ascii 参数引起的中文编码问题
在使用json.dumps时要注意一个问题 >>> import json>>> print json.dumps('中国')"\u4e2d\u56fd" 输出的会是'中国' 中的ascii 字符码,而不是真正的中文。 这是因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_as原创 2017-09-26 19:31:32 · 2815 阅读 · 0 评论 -
编写高效且优雅的 Python 代码
Python 作为一门入门极易并容易上瘾的语音,相信已经成为了很多人 “写着玩” 的标配脚本语言。但很多教材并没有教授 Python 的进阶和优化。本文作为进阶系列的文章,从基础的语法到函数、迭代器、类,还有之后系列的线程 / 进程、第三方库、网络编程等内容,共同学习如何写出更加 Pythonic 的代码部分提炼自书籍:《Effective Python》&《Python3 Cookbook》,但转载 2017-04-22 17:36:33 · 821 阅读 · 0 评论 -
celery实现任务统一收集、分发执行
首先解释下目标的概念:celery任务消息会由各种途径(比如手动通过python shell触发、通过tornado触发等)发往统一的一个celery broker,然后任务消息会由不同server上的worker去获取并执行。具体点说就是,借助celery消息路由机制,celery broker中开不同的消息队列来接收相应类型的任务消息,然后不同server上开启worker来处理目标消息队列里转载 2017-06-16 18:30:21 · 6896 阅读 · 0 评论 -
微型 Python Web 框架: Bottle
Bottle 是一个非常小巧但高效的微型 Python Web 框架,它被设计为仅仅只有一个文件的python模块,并且除Python标准库外,它不依赖于任何第三方模块。路由(Routing):将请求映射到函数,可以创建十分优雅的 URL模板(Templates):Pythonic 并且快速的 Python 内置模板引擎,同时还支持 mako, jinja2, cheetah 等第三方转载 2017-06-23 18:30:13 · 506 阅读 · 0 评论 -
python 单例模式
单例模式146 class Singleton(object):147 _instances = {}148 _lock = threading.Lock()149 150 @staticmethod151 def get_instance(cls):152 def _get_instance(*args, **kwargs):153原创 2017-09-05 11:55:22 · 475 阅读 · 0 评论 -
python emoji 表情过滤
http://my.oschina.net/jiemachina/blog/189460注意替换的这些emoji是标准的表情字符,每个表情本来是2个字节,替换成字符串后,每个表情就变成12个字符了,浪费了很多空间,不过简单,不需要专门写个map一一对应了;把表情变成字符串[python] view plain copydef原创 2017-08-29 19:08:59 · 4682 阅读 · 0 评论 -
python文件加锁
首先要引入库import fcntl打开一个文件f = open('./test')对该文件加密:fcntl.flock(f, fcntl.LOCK_EX)这样就对文件test加锁了,如果有其他进程要对test进行加锁,则不能成功,会被阻塞,但不会退出程序。解锁:fcntl.flock(f,fcntl.LOCK_UN)解锁后,其他进程就可以对该文件进行加锁了。原创 2017-09-01 09:51:08 · 5029 阅读 · 0 评论 -
MySQLdb.cursors AttributeError: 'module' object has&
原来ubuntu 12.04 python-mysqldb只需要import MySQLdb就可以使用MySQLdb.cursors.DictCursor(字典游标)不过最近不知道python的原因还是mysqldb的原因,应该是python-mysqldb版本问题吧,Traceback (most recent call last): File "", li原创 2017-09-26 16:35:29 · 1678 阅读 · 0 评论 -
编写高效且优雅的 Python 代码
Python 作为一门入门极易并容易上瘾的语音,相信已经成为了很多人 “写着玩” 的标配脚本语言。但很多教材并没有教授 Python 的进阶和优化。本文作为进阶系列的文章,从基础的语法到函数、迭代器、类,还有之后系列的线程 / 进程、第三方库、网络编程等内容,共同学习如何写出更加 Pythonic 的代码部分提炼自书籍:《Effective Python》&《Python3 Cookbook》,但转载 2017-04-22 17:35:58 · 510 阅读 · 1 评论