By Calabash
使用South之前铭记:请你一定要相信他的能力,抛弃对他的不信任感。因为South给人的第一印象就是好像每个操作都在抛异常。
South概述
* 针对django自带的syncdb同步models和数据库的缺陷开发的数据迁移工具,可以作为syncdb的替代,South能够检测对models的更改并同步到数据库.
South基本用法
* 安装完South之后,要在django项目中使用South,先要将South作为一个App导入项目,所以设置INSTALL_APP添加south
* 第一次使用South(对于已存在的项目转用South见下一步的介...
保存下来,以后说不定用的到
#!/usr/bin/python# -*- coding: UTF-8 -*-import osimport timeimport datetimetime1 = '2010-4-1 12:33' #指定时间root1 = 'D:\\WWW' #指定文件夹def txt_2_time(txt): l = txt.replace(' ','-').replace(':','-').split('-') l = map(int,l) s = datetime.datetime(*l) t = time.mktime...
常规版(最容易理解):
for i in range(1,10): for j in range(1,i+1): print '%d*%d=%d' %(i,j,i*j), print
函数式版:
for i in range(1,10): print ''.join(map(lambda x:'%d*%d=%d' %(x,i,i*x), range(1,i+1)))
号称最简版(看似仅有一行,其实把简单的问题搞的贼复杂了,不建议这种方式):
print '\n'.join([ ' '.join([ "%d*%d=%2s"...
HTMLParser版:
#!/usr/bin/python# -*- coding: UTF-8 -*-import HTMLParserclass UrlParser(HTMLParser.HTMLParser): def __init__(self): HTMLParser.HTMLParser.__init__(self) self.urls = [] def handle_starttag(self, tag, attrs): if tag == 'a': for name,value in at...
用1000个元素的列表作实验,计算它们的执行时间
首先想到的是遍历列表然后转换元素类型,组成新的列表:
#!/usr/bin/python# -*- coding: UTF-8 -*-from time import clock as nowtime1 = now()txt = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53...
txt = '123456789'd = {'1':'a', '2':'b', '3':'c', '4':'d', '5':'e', '6':'f', '7':'g', '8':'h', '9':'i', }for k in d: txt = txt.replace(k,d[k])print txt
#!/usr/bin/python# -*- coding: UTF-8 -*-import timeimport os, win32gui, win32ui, win32con, win32apidef window_capture(): hwnd = 0 hwndDC = win32gui.GetWindowDC(hwnd) mfcDC=win32ui.CreateDCFromHandle(hwndDC) saveDC=mfcDC.CreateCompatibleDC() saveBitMap = win32ui.CreateBitmap() ...
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->def addlist(alist): for i in alist: yield i + 1取出alist的每一项,然后把i + 1塞进去。然后通过调用取出每一项:
Co...
enumerate在遍历时可以返回元素的索引值,如:for i, v in enumerate(a):这对于某些需要索引值的情况非常方便。如打印序号,如果不用这个方法,我们遍历一般要写成:for i in range(len(a)): print i, a[i]而使用enumerate,可以写为:for i, v in enumerate(a): print i, v
摘自:http://www.zeuux.org/pipermail/zeuux-python/2006-June/026647.html
python内置函数map/reduce/filter
python有几个内置的函数很有意思:map/filter/reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是python列表方法的三架马车。
filter() 函数:filter函数的功能相当于过滤器。调用一个布尔函数bool_func来迭代遍历每个seq中的元素;返回一个使bool_seq返回值为true的元素的序列。
>>>a=[1,2,3,4,5,6,7]>>>b=filter(lambda x:x>5, a)>>>print b>>>[6,7]如果fi...
#!/usr/bin/python# import MySQL moduleimport MySQLdb# get user inputname = raw_input("Please enter a name: ")# connectconn = MySQLdb.connect(host="localhost", user="nobody", passwd="nobody", conn="qestar", unix_socket="/tmp/mysql.sock")# create a cursorcursor = conn.cursor()# execute SQL statemen...
网站就是要和数据库进行交互,否则什么都不用做了...今天我们来看一个叫MySQLdb的库,这个用来和MySQL数据库进行交互. 可以从这里获得这个库 http://sourceforge.net/projects/mysql-python 如果你不确定你的python环境里有没有这个库,那就打开python shell,输入 import MySQLdb,如果返回错误信息,那就表示你的机器上没有,赶紧去下载一个.我的机器是win xp,所以我下载了win环境下的exe那个,直接双击完成安装. 在介绍具体的操作前,先花点时间来说说一个程序怎么和数据库进行交互 1.和数据库建立连接 2.执行...
比较容易记忆的是用内置的set
l1 = ['b','c','d','b','c','a','a']l2 = list(set(l1))print l2
还有一种据说速度更快的,没测试过两者的速度差别
l1 = ['b','c','d','b','c','a','a']l2 = {}.fromkeys(l1).keys()print l2
这两种都有个缺点,祛除重复元素后排序变了:
['a', 'c', 'b', 'd']
如果想要保持他们原来的排序:
用list类的sort方法
l1 = ['b','c','d','b','c...
set也是python里一个重要类型,有时候还是蛮好用的。详细文档和说明可以用help(set) 查看其说明和方法。 下面来点简单的小例子说明把。 >>> x = set('spam') >>> y = set(['h','a','m']) >>> x, y (set(['a', 'p', 's', 'm']), set(['a', 'h', 'm'])) 再来些小应用。 >>> x & y # 交集 set(['a', 'm']) >>> x | y # 并集 set(['a', 'p', 's', 'h', 'm']) >>> x - y # 差集 set(['p', 's'...
php的explode和implode很方便,python没有这两个函数,不过python有split和join
实现explode
>>> str = 'a|b|c|d|e'>>> str.split("|")['a', 'b', 'c', 'd', 'e']
实现implode
>>> list = ['a', 'b', 'c', 'd', 'e']>>> "|".join(list)'a|b|c|d|e'
Sqlalchemy中, 创建Session是一件比较耗资源的事情.在Web环境中, 我们需要以一种节省的方式使用, SA提供了一个对Session的包装, scoped_session, 以确保能共享一个Session.官方文档的描述 http://www.sqlalchemy.org/docs/05/session.html#unitofwork_contextual_creating
文档中并没有直接给出最佳实践.
我做了一点的google search后, 将代码改为:
#sqlalchemyengine = create_engine('mysql://root:pa...
把这个安装脚本下载下来 :http://peak.telecommunity.com/dist/ez_setup.py
然后到这个脚本所在的目录,直接python ez_setup.py
pprint模块中使用的格式化可以按照一种格式正确的显示数据, 这种格式即可被解析器解析, 又很易读. 输出保存在一个单行内, 但如果有必要, 在分割多行数据时也可使用缩进表示.
import sysimport pprintpprint.pprint(sys.path)
运行结果:
[ 'C:\\WINDOWS\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\...
Tkinter———— Python默认的图形界面接口。 Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的,目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件,如一个按钮、一个滚动条等。通过Tk提供的这些小部件,我们就可快速地进行GUI开发。Perl、Scheme等语言也利用Tk库进行GUI开发。Tkinter是跨平台,在各种平...