python编程技巧
对python开发中的一些常见问题和算法等进行讨论。希望更多人使用python更便捷!
水墨小龙虾
2012-----北京蓝汛
2014-----M1905
2014-----猎豹移动
展开
-
python解析HTML的方法——HTMLParser
HTMLParser是python用来解析html的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。 HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它 主要的用户回调函数的命名都是以handler_开头的,都是HTMLParser的成员函数。当我们使用时,就从HTMLPar转载 2012-11-02 12:47:38 · 4874 阅读 · 0 评论 -
使用python的nose模块进行测试
一、安装nose 先用easy_install 安装 nose,easy_install是一个很好的python工具,可以方便安装很多的python程序。可以去http://pypi.python.org/pypi/setuptools了解一下easy_install。如果懒得去看的,可以直接从这里下载安装文件进行安装就可以了,注意,这个链接是windows 32位的安装包。 安装转载 2012-11-02 16:42:10 · 3241 阅读 · 0 评论 -
python运行时修改代码的方法——monkey patch
monkey patch (猴子补丁) 用来在运行时动态修改已有的代码,而不需要修改原始代码。简单的monkey patch 实现:#coding=utf-8def originalFunc(): print 'this is original function!' def modifiedFunc(): modifiedFunc=1 pri原创 2012-11-27 12:10:41 · 4690 阅读 · 0 评论 -
python自动生成易于阅读的html文档——使用Sphinx
Sphinx是一组可以用来从文本树生成一个HTML结构的脚本和docutils扩展。这个工具可以用来创建python文档,现在很多项目都使用它来制作文档。使用它内建的功能,生成一个真正精细的浏览系统,以及一个简单但足够用的客户端javascript搜索引擎。使用方法:1.easy_install Sphinx2.sphinx-quickstart #生成目录结构,一路yes,回车转载 2012-12-04 18:00:01 · 12981 阅读 · 0 评论 -
python测试框架——unittest和nosetest
1.使用unittest来开发python测试 PyUnit创建于1999,2001年被加入到python2.1的基础类库中。名字叫unittest。 例子1:#first democlass MyClass(object): def __init__(self,num): self.num = num def printNu原创 2012-12-07 12:06:26 · 9013 阅读 · 0 评论 -
最近碰到一些python的小知识点,容易错的地方
1.第一个问题def getParents(child,parents=[]): if child: parents.append(child) return getParents(child-1,parents) else: return parents # import pdb# pdb.set_t原创 2013-01-14 23:10:59 · 2007 阅读 · 1 评论 -
python的条件(三元)运算符——实现b? x: y
三元运算符是C/C++/C#一系语言所特有的一类运算符,例如:b? x: y 对表达式b? x: y,先计算条件b,然后进行判断,如果b的值为true,则计算并返回x的值,否则计算并返回y的值。在Python中,提供了专门的逻辑分支表达式来模拟C系中的三元运算,我们也可以在一行语句中完成三元运算。 x = true_value if condition els转载 2013-01-23 11:07:01 · 2647 阅读 · 0 评论 -
python使用json格式进行数据封装
官方地址(英文):http://simplejson.readthedocs.org/en/latest/最简单的使用方法是:>>> import simplejson as json>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])'["foo", {"bar": ["baz", null, 1.0, 2]}]'>>> p原创 2013-01-23 11:43:05 · 4831 阅读 · 0 评论 -
python的list操作
原文地址:http://blog.csdn.net/facevoid/article/details/5338048创建列表sample_list = ['a',1,('a','b')]Python 列表操作sample_list = ['a','b',0,1,3]得到列表中的某一个值value_start = sample_list[0]end_value = sa转载 2013-01-24 11:12:17 · 1598 阅读 · 0 评论 -
python的{}字典操作
一个简单的for语句就能循环字典的所有键,就像处理序列一样:In [1]: d = {'x':1, 'y':2, 'z':3}In [2]: for key in d: ...: print key, 'corresponds to', d[key] ...: y corresponds to 2x corresponds to 1z cor转载 2013-01-24 16:32:29 · 2314 阅读 · 0 评论 -
Python利用ConfigParser读取配置文件
出处:http://www.cnblogs.com/MikeZhang/archive/2011/11/19/2255169.html用python读取配置文件比较方便,比如下面一个配置文件:0.ini文件:---------------文件开始----------------[global]ip = 192.168.1.100 ;ip地址port = 1234MA转载 2013-03-05 10:42:39 · 2089 阅读 · 0 评论 -
python的MRO方案
Python 中的 class 分为 classical 和 new-style 两大类。其中 classical 是 python 一直沿用的,而 new-style 是 2.2 才开始引入的东西。只要 class 继承于 object,或 bases class 里面任意一个继承于 object,这个 class 都是 new-style。对于复杂的继承结构,class 中 method转载 2013-03-05 18:37:15 · 1464 阅读 · 1 评论 -
python的super缺陷,需要特别注意
首先,运行如下代码:class D(object): def foo(self): print "class D" class B(object): def foo(self): print "class B" super(B,self).foo() class C(D):原创 2013-03-05 22:46:28 · 2187 阅读 · 0 评论 -
python第三方包的windows安装文件exe格式
今天弄了一上午的python-ldap,发现要么安装vc,要么用其他比较麻烦的方法,都比较麻烦。幸好找到这个地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/ http://www.voidspace.org.uk/python/modules.shtml这上面有很多python第三方包的二进制安装文件,包括32位和64位的。下载安装就ok了原创 2013-03-07 11:51:11 · 4644 阅读 · 0 评论 -
linux下nginx+uwsgi部署python应用
nginx的安装和配置:http://blog.csdn.net/cjh6311882/article/details/76935751.获取uwsgiwget http://projects.unbit.it/downloads/uwsgi-1.0.2.1.tar.gz2.安装tar zxvf uwsgi-1.0.2.1.tar.gzcd uwsgi-1.0.2.1/原创 2012-10-16 22:08:53 · 2593 阅读 · 0 评论 -
字符串转换的UnicodeDecodeError—— ‘\xa0’问题
unicode中的‘\xa0’字符在转换成gbk编码时会出现问题,gbk无法转换'\xa0'字符。所以,在转换的时候必需进行一些前置动作:string.replace(u'\xa0', u' ')将'\xa0‘替换成u' '空格。原创 2012-10-11 16:44:36 · 20165 阅读 · 3 评论 -
python——使用yaml数据格式,PK --> XML,JSON
YAML 概述:是一种直观的能够被电脑识别的数据序列化格式 在YAML里面,结构通过缩进来表示,连续的项目通过减号"-"来表示,map结构里面的key/value对用冒号":"来分隔。 YAML也有用来描述好几行相同结构的数据的缩写语法,数组用'[]'包括起来,hash用'{}'来包括。例子:root: urls: - {name: chen,原创 2012-09-13 15:36:33 · 2358 阅读 · 0 评论 -
python的logging.config使用详解
import logging logger = logging.getLogger() # 生成一个日志对象 # logfile是一个全局变量,它就是一个文件名,如:'crawl.log' logfile = 'test.log' # 生成一个Handler。logging支持许多Handler, # 象FileHandler转载 2012-09-12 10:49:53 · 2305 阅读 · 0 评论 -
如何自动生成setup.py文件
为了使所有的包遵循相同的结构,通过一个代码生成工具来抽取盒提供通用的代码模板。这个方法被称为产生式编程。 在python社区中,最常用的是python paste。 python paste中包含了多个工具,我们需要的是PasteScript,可以使用easy_install来安装它。 easy_install PasteScriptpaster命令将可用并带有原创 2012-09-06 16:54:15 · 6115 阅读 · 0 评论 -
python的setup.py文件及其常用命令
编写setup.py文件,获取帮助:python setup.py --help-commandsStandard commands: build build everything needed to install build_py "build" pure Python modules (copy to build directory)原创 2012-09-06 16:09:36 · 4790 阅读 · 0 评论 -
安装python的cx_Oracle模块
我的实践过程:1,将oci.dll文件(从oracle安装目录搜索)复制到python安装目录的Lib\site-packages下,如 C:\Python26\Lib\site-packages2,添加环境变量: ORACLE_HOME = D:\oracle\ora92; PATH = .;%PATH%;D:\oracle\ora92\bin; LD_LIBRARY_转载 2012-07-19 17:59:58 · 2136 阅读 · 0 评论 -
python的沙盒环境--virtualenv
VirtualEnv用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装。使用 VirtualEnv 的理由:隔离项目之间的第三方包依赖,如A项目依赖django1.2.5,B项目依赖django1.3。为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。 使用说明:安装:转载 2012-08-07 17:33:04 · 6055 阅读 · 1 评论 -
python的egg的制作
egg包是目前最流行的python应用打包部署方式。如何制作和安装egg包?下面我就简单的分析了一下。总是安装别人的egg包,是不是也想制作自己的egg包呢?好,接下来我们就自己制作一个简单的egg包。首先建立工程目录egg-demo,初始化一个setup.py文件:$ mkdir egg-demo$ cd egg-demo$ touch setup.py$转载 2012-08-10 13:56:55 · 2848 阅读 · 0 评论 -
matplotlib-绘制精美图表
matplotlib-绘制精美图表matplotlib是一个在python下实现的类matlib的纯python的三方库,旨在用python实现matlab的功能,是python下最出色的会图库,功能很完善,风格跟matlib很相似。我们画图的目的是将函数以图片的形式展示出来,所以需要关注两个方面的东西:1.函数 2.图片 函数方面使用的是numpy这个库,其中包括了很多科学计算的功能。转载 2012-08-13 16:56:54 · 3876 阅读 · 0 评论 -
Python 连接 Oracle 示例
二. Python 连Oracle 的基本操作2.1 DB连接和关闭DB连接2.1.1 方法一:用户名,密码和监听 分开写[root@rac1 u01]# cat db.pyimport cx_Oracledb=cx_Oracle.connect('system','oracle','192.168.2.42:1521/dave')print db.version转载 2012-08-21 10:40:13 · 2159 阅读 · 0 评论 -
python 获取当前时间
我有的时候写程序要用到当前时间,我就想用python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次,为了能够更好的记住,我今天特意写下python 当前时间这篇文章,如果你觉的对你有用的话,可以收藏下。取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方文档了解下,要取的当前时间的话,要取得当前时间的时转载 2012-08-21 10:44:20 · 6666 阅读 · 0 评论 -
Python——maketrans和translate方法,可以用来从string中替换和删除字符
maketrans和translate是密切相关的两个方法,先看translate的说明 S.translate(table [,deletechars]) -> string Return a copy of the string S, where all characters occurring in the optional argumen转载 2012-08-22 10:18:40 · 3184 阅读 · 0 评论 -
python常用文件、path函数分类整理
python 文件操作python:目录与文件操作os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回但前目录('.')os.chdir(dirname):改变工作目录到dirnameos.path.isdir(name):判断name是不是一个目录,name不是目录就返回false转载 2012-08-27 19:03:02 · 1822 阅读 · 0 评论 -
python中的crontab ————sched标准库
地址:http://docs.python.org/library/sched.html可以做计划任务,就是在指定的延时之后执行一段程序。sched.scheduler(timefunc, delayfunc) 接受两个参数,timefunc必须在没有参数的情况下也能调用,返回延时数字(单位无所谓)。delayfunc接受一个参数,即为timefunc的返回值,并按照这个返回值进行延时转载 2012-08-28 10:42:09 · 2125 阅读 · 1 评论 -
Python线程指南
1. 线程基础1.1. 线程状态线程有5种状态,状态转换的过程如下图所示:1.2. 线程同步(锁)多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时,可能存在数据不同步的问题。考虑这样一种情况:一个列表里所有元素都是0,线程"set"从后向前把所有元素改成1,而线程"print"负责从前往后读取列表并打印。那么,可能线程"set"开始改的时转载 2012-08-29 11:35:38 · 1196 阅读 · 0 评论 -
最常用的python实现
1.判断一个列表是否为空 a=[] if a : print '不为空' 2.判断一个变量是否存在 if vars().has_key('s') #s为变量名 3.判断一个文件是否存在 os.path.isfile(path) #这里的path是全路径 4.判断一个文件夹是否存原创 2012-08-30 15:56:59 · 1683 阅读 · 0 评论 -
得到python某个模块的路径
python如何能得到一个模块的路径由于我还是小小菜鸟,所以有时很需要知道究竟python是从哪里把一个模块导入进来的:import impprint imp.find_module("MySQLdb")这个就能打印出这个模块的路径 >>> print imp.find_module('MySQLdb')(None, 'C:\\Python27\\lib转载 2012-08-31 17:31:46 · 4615 阅读 · 0 评论 -
Python性能鸡汤---大东哥
第一部分 阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. "它肯定很慢!"毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用Python服务于每小时4千万转载 2012-05-16 11:10:02 · 2905 阅读 · 0 评论 -
python字符串的操作——python cookbook
一.文本1.每次处理一个字符thelist=list(thestring) #把字符串转成字符序列2.字符和字符值之间的转换>>> print ord('a')97>>> print chr(97)a>>> print ord(u'我')25105>>> print unichr(25105) #最大到65535我3.判断一个变量是否是字符串类型原创 2012-05-17 12:11:19 · 1180 阅读 · 0 评论 -
python自动安装工具easy_install的使用
安装easy_install完成之后,如何使用easy_install呢,去官网看看吧:--Downloading and Installing a Package使用一: 根据你想要的安装包名来进行easy_install,工具会检索网页查询最新版本的包,自动下载、构建和安装 easy_install SQLObject 这办法很简洁并不适合中国国转载 2012-05-18 15:37:23 · 2860 阅读 · 0 评论 -
python的struct使用注意
python的struct模块可以让我们很方便的操作二进制数据,但是我们必须注意的是:我们在使用struct进行二进制操作的时候会发现,操作系统和硬件将影响程序是否正常运行。在Format = 'lllllfll' f = open('test.dat','rb') data = f.read(32) s=[] s.append(struct.unpack(Format,d原创 2012-05-24 17:02:05 · 2009 阅读 · 0 评论 -
python处理字符串编码
当用python处理字符串时,如果提示编码问题,如果提示的编码如下格式:'\u6211',则代表这个字符串的编码格式为gb2312,我们只需要对其.decode('gb2312')就可以了。原创 2012-06-21 16:02:32 · 1250 阅读 · 0 评论 -
非常好的python资源!不可错过!
http://www.douban.com/group/topic/13716762/http://www.douban.com/group/topic/13716762/非常好的python资源!google python style guide中文版http://www.bsdmap.com/articles/zh-google-python-style-guide/pytho原创 2012-06-27 10:13:52 · 2681 阅读 · 0 评论 -
6.python的set、list和dict的解析
#-*-coding:UTF-8-*-#列表解析#提供了一种紧凑的方式,实现了通过对列表中每一个元素应用一个函数方法来将一个列表映射到另外一个列表。a_list=[1,2,3,4,5]b=[elem *2 for elem in a_list] #对于a_list中的每个元素,都乘以2,然后返回一个新列表print bb=[f fo原创 2012-03-31 11:44:18 · 7012 阅读 · 3 评论 -
python下的一些特殊属性(几个实例说明)
实例1:#-*-coding:UTF-8-*-class FirstDemo(object): """ 这里是一个doc """ a=10 #类属性 def demo(self): """ 第一个方法 """ pass def demo2(原创 2012-03-30 11:17:40 · 2079 阅读 · 0 评论