分类目录归档:Python

Let easy_install use MinGW as the windows complier

如果你也在用Python写程序,那么你一定需要使用easy_install进行安装包管理,当然,有点绝对,你也可以使用像pip或者pypm这种包管理工具,但是根据我自己的使用经验,pip和pypm在windows经常出问题,不是下载不下来,就是解析出错。 当然这里介绍的开发环境是windows,在linux上有强大的gcc,安装Python的C模块不会有什么问题,但是在windows上,如果你安装的python模块需要C编译,那问题就来了,就会出现诸如“cannot find vcvarsall.bat”等错误。  

发表在 Python | 标签为 | 留下评论

让 easy_install 使用代理翻墙安装 Python 模块

关键字:python, easy_install, setuptools, myentunnel, polipo, windows, linux, socks5, http, proxy 因为一些众所周知的原因,我们有些网站无法访问,造成生活和生产的巨大不便。其中对我影响比较大的一个就是安装某些 Python 模块的时候,easy_install 无法访问到网站。在这里分享让 easy_install 使用代理的方法,如果你拥有 socks5 或 http 代理服务器可用,这个方法能够让 easy_install 完美地跨越长城。 http 首先介绍容易实现的 http 方式。得益于 python 模块 urllib 能够透明使用代理的能够,easy_install 使用 http 代理是非常方式的。无论在 windows 还 linux 下,只要设置好 http_proxy 环境变量就可以了。 你可以在 … 继续阅读

发表在 Python | 标签为 | 留下评论

Python中使用Struct数据格式转换

Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本 类型:字符串,整数,浮点数,元组,列表,字典。通过这六种数据类型,我们可以完成大部分工作。但当Python需要通过网络与其他的平台进行交互的时 候,必须考虑到将这些数据类型与其他平台或语言之间的类型进行互相转换问题。打个比方:C++写的客户端发送一个int型(4字节)变量的数据到 Python写的服务器,Python接收到表示这个整数的4个字节数据,怎么解析成Python认识的整数呢? Python的标准模块struct就用来解决这个问题。 struct模块的内容不多,也不是太难,下面对其中最常用的方法进行介绍: struct.pack struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为 字节流,或字节数组)。其函数原型为:struct.pack(fmt, v1, v2, …),参数fmt是格式字符串,关于格式字符串的相关信息在下面有所介绍。v1, v2, …表示要转换的python值。下面的例子将两个整数转换为字符串(字节流): import struct a = 20 b = 400  

发表在 Python | 标签为 | 留下评论

五分钟理解元类(Metaclasses)

真的,它并非巫术。 “元类的魔幻变化比 99% 的用户所担心的更多,当你搞不懂是否真的需要用它的时候,就是不需要。” —Tim Peters 本文源于在 PyCon UK 2008 上的一个快速演讲。 元类被称为 Python 中的“深奥的巫术”。尽管你需要用到它的地方极少(除非你基于 zope 编程),可事实上它的基础理论其实令人惊讶地易懂。 一切皆对象 一切皆对象 一切都有类型 “class”和“type”之间本质上并无不同 类也是对象 它们的类型是 type 以前,术语 type 用于内置类型,而术语 class 用于用户定义的类,但自 Pythoon 2.2 以来“class”和“type”本质上并无不同。 对于旧风格(old-style)类的类型是 types.ClassType。 真的,这是真的 Python 2.5.1 (r251:54869, Apr 18 2007, … 继续阅读

发表在 Python | 标签为 , | 留下评论

从HTML文件中抽取正文的简单方案

译 者导读:这篇文章主要介绍了从不同类型的HTML文件中抽取出真正有用的正文内容的一种有广泛适应性的方法。其功能类似于CSDN近期推出的“剪影”,能 够去除页眉、页脚和侧边栏的无关内容,非常实用。其方法简单有效而又出乎意料,看完后难免大呼原来还可以这样!行文简明易懂,虽然应用了人工神经网络这样 的算法,但因为FANN良好的封装性,并不要求读者需要懂得ANN。全文示例以Python代码写成,可读性更佳,具有科普气息,值得一读。 You’ve finally got your hands on the diverse collection of HTML documents you needed. But the content you’re interested in is hidden amidst adverts, layout tables or formatting markup, and other various links. Even worse, there’s … 继续阅读

发表在 Python | 标签为 | 留下评论

got api

今天从老婆的签名那里看到一个好用参考网站:http://www.gotapi.com 发现这个网站的API参考很不错,可以同时支持PHP, Python, MySQL, jQuery… 估计是我太土了,呵呵,或者是因为它的域名我比较喜欢(和我的域名一个思路),就收藏了。 还有就是一直比较喜欢PHP的官方参考手册,查起来方便;对python的官方参考手册很讨厌,查个API都不好找。这个gotapi吗,虽说内容是从python官网iframe过来的,但是它还是做了索引,搜索感觉比手册好用一点,哈哈,还是那句话,太土了,不会用python的手册查询API… 喜欢的赶紧上:http://www.gotapi.com  

发表在 MySQL, PHP, Python | 标签为 | 留下评论

Python学习资料集

Python基本安装: http://www.python.org/ 官方标准Python开发包和支持环境,同时也是Python的官方网站; http://www.activestate.com/ 集成多个有用插件的强大非官方版本,特别是针对Windows环境有不少改进; Python文档: http://www.python.org/doc/current/lib/lib.html Python库参考手册。 http://www.byteofpython.info/ 可以代替Tutorial使用,有中文译版的入门书籍。 http://diveintopython.org/ 一本比较全面易懂的入门书,中文版翻译最近进步为很及时的5.4了。 缺点是此书针对的Python版本比较陈旧,会给出一些过时的优化建议,建议同时阅读赖勇浩的<Dive into Python>大补贴。 http://www.python.org/peps/pep-0008.html 建议采用的Python编码风格(啄木鸟社区上的中文译文)。 http://floss.zoomquiet.org/ Zoom.Quiet的一个挺全面的文档集(包括大量Python内容)。 http://wiki.woodpecker.org.cn/moin/March_Liu/PyTutorial Python Tutorial中文版 http://www.douban.com/doulist/63694/ 其他相关书籍的推荐 Pythonic到底是什么玩意儿? 啄木鸟社区上的Python资源索引 培训素材: 简单介绍类的可参考:IntroPy和在公司推广python 实际编程能力培训可参考沈仙人对他公司内部的Python培训素材:前言、基础篇、面向对象、图形界面编程、网络编程 常用第三方类库: http://www.pfdubois.com/numpy/ Python的数学运算库,有时候一些别的库也会调用里面的一些功能,比如数组什么的; http://www.pythonware.com/products/pil/ Python下著名的图像处理库Pil; http://simpy.sourceforge.net/ 利用Python进行仿真、模拟的解决方案; Matplotlib 据说是一个用来绘制二维图形的Python模块,它克隆了许多Matlab中的函数, 用以帮助Python用户轻松获得高质量(达到出版水平)的二维图形; http://www.amk.ca/python/code/crypto … 继续阅读

发表在 Python | 留下评论

Python 的Decorator

之前贴过一篇文章,是介绍python元数据编程的。今天在火车上翻看那本learning python,发现之前看过的decorator又忘记怎么用了,晚上回来,又百度了一把,试了试,哈哈,写写下来,下次就不会忘记了吧。 Python Decrator小议。 1. 常用的Decrator的方式,一般也是各种书上拿来举例子的方式,如下: def A(func): #do something here return func #返回一个和func定义相同的函数 @A def func(): #function contents 这种方式是最简单也最容易理解的方式,当调用方法func的时候,会先调用:A(func) ,然后用A(func)返回的函数做执行,也就是: A(func)() 同理,对方法: @A @B @C def func(): pass 对func()的调用会变成: 会变成: A(B(C(func)))() 这里有一点需要注意,在前面注释中也写了,就是对于A,或者B,或者C,都要返回一个和def func定义相同的函数,所以,为了是decrator函数更通用,通常会定义decrator格式为: def Decrator(func):#接受一个function 对象 def inner_func(*args, **argkv): … 继续阅读

发表在 Python | 留下评论

大量小文件 同步方案

传统的文件同步方案有rsync(单向) 和 unison(双向)等,它们需要扫描所有文件后进行比对,差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将非常耗时。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。 之前看了Amazon的Dynamo的设计文档, 它们每个节点的数据是通过Hash Tree来实现同步,既有通过日志来同步的软实时特点(msyql, bdb等),也可以保证最终数据的一致性(rsync, unison等)。Hash Tree的大体思路是将所有数据存储成树状结构,每个节点的Hash是其所有子节点的Hash的Hash,叶子节点的Hash是其内容的Hash。这样一 旦某个节点发生变化,其Hash的变化会迅速传播到根节点。需要同步的系统只需要不断查询跟节点的hash,一旦有变化,顺着树状结构就能够在logN级 别的时间找到发生变化的内容,马上同步。 文件系统天然的是树状结构,尽管不是平衡的数。如果文件的修改时间是可靠的,可以表征文件的变化,那就可以用它作为文件的Hash值。另一方面,文 件的修改通常是按顺序执行的,后修改的文件比早修改的文件具有更大的修改时间,这样就可以把一个目录内的最大修改时间作为它的修改时间,以实现Hash Tree。这样,一旦某个文件被修改,修改时间的信息就会迅速传播到根目录。 一般的文件系统都不是这样做的,目录的修改时间表示的是目录结构最后发生变化的时间,不包括子目录,否则会不堪重负。因为我们需要自己实现这个功 能,利用Linux 2.6内核的新特性inotify获得某个目录内文件发生变化的信息,并把其修改时间传播到它的上级目录(以及再上级目录)。Python 有 pyinotify,watch.py的代码如下: #!/usr/bin/python from pyinotify import * import os, os.path flags = IN_CLOSE_WRITE|IN_CREATE|IN_Q_OVERFLOW dirs = {} base = ‘/log/lighttpd/cache/images/icon/u241′ base = ‘tmp’ class … 继续阅读

发表在 Python | 标签为 , , | 2 条评论

Charming Python: Decorators make magic easy

今天在看Python的Decorators,找到篇文章,写的很详细了,收藏下来。
Charming Python: Decorators make magic easy

David Mertz, Ph.D. (mertz@gnosis.cx), Developer, Gnosis Software, Inc.

29 Dec 2006

Python made metaprogramming possible, but each Python version has added slightly different — and not quite compatible — wrinkles to the way you accomplish metaprogramming tricks. Playing with first-class function objects has long been around, as have techniques for peaking and poking at magic attributes. With version 2.2, Python grew a custom metaclass mechanism that went a long way, but at the cost of melting users’ brains. More recently, with version 2.4, Python has grown “decorators,” which are the newest — and by far the most user-friendly way, so far — to perform most metaprogramming.

Doing a lot by doing very little 继续阅读

发表在 Python | 标签为 , | 留下评论