Archive for the 'Python' Category

将python程序转为二进制运行

还不太清楚能不能在没有python的环境下运行,因为实在好像现在linux都有python安装。
编译的过程如下:

>>> import py_compile
>>> py_compile.compile(’abc.py’)

Twisted网络编程必备

虽然还没有用到wisted,但是发现很多文章都提到它,还是不错的。它是异步的、事件驱动的网络函数库。其它的我也不知道。。
这里给出一些文章的链接,回头再看。

Berkeley DB XML and python

Berkeley DB XML是一种原生的XML数据库,它允许将XML文档内容直接存储在数据库中。
由此,我想可以用它来存储一些简单的、不经常更新的、但是要求快速查询的数据。
我们通过一个简单的例子来说明,如何针对Berkeley DB XML来存储XML文档:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb.db import *
from dbxml import *
 
mgr = XmlManager()
uc = mgr.createUpdateContext()
 
container = mgr.openContainer("demo.dbxml", DB_CREATE)
 
filename = ‘demo’
fileContents = """<?xml version="1.0" encoding="UTF-8"?>
<result>OK</result>
"""
 
container.putDocument(filename, fileContents, uc)
在这个例子中,会创建一个名为demo.dbxml的数据库文件。
相应的,我们读取刚刚存储的内容,可以使用:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb.db import *
from dbxml import *
 
mgr = XmlManager()
 
container = mgr.openContainer("demo.dbxml")
container.addAlias("demo")
 
qc = mgr.createQueryContext()
 
results = mgr.query("collection(’demo’)/result", qc)
 
for value in results:
    document = value.asDocument()
    print document.getName(), "=", value.asString()
在实际应用过程中,发现当大量数据同时插入的时候,会产生类似以下的错误:

Traceback […]

Python 自省指南

什么是自省?
在日常生活中,自省(introspection)是一种自我检查行为。自省是指对某人自身思想、情绪、动机和行为的检查。伟大的哲学家苏格拉底将生命中的大部分时间用于自我检查,并鼓励他的雅典朋友们也这样做。他甚至对自己作出了这样的要求:“未经自省的生命不值得存在。”(请参阅参考资料以获取关于苏格拉底更多信息的链接。)
在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什么。自省向程序员提供了极大的灵活性和控制力。一旦您使用了支持自省的编程语言,就会产生类似这样的感觉:“未经检查的对象不值得实例化。”
本文介绍了 Python 编程语言的自省能力。整个 Python 语言对自省提供了深入而广泛的支持。实际上,很难想象假如 Python 语言没有其自省特性是什么样子。在读完本文时,您应该能够非常轻松地洞察到自己 Python 对象的“灵魂”。
在深入研究更高级的技术之前,我们尽可能用最普通的方式来研究 Python 自省。有些读者甚至可能会争论说:我们开始时所讨论的特性不应称之为“自省”。我们必须承认,它们是否属于自省的范畴还有待讨论。但从本文的主旨出发,我们所关心的只是找出有趣问题的答案。
现在让我们以交互方式使用 Python 来开始研究。当我们从命令行启动 Python 时,就进入了 Python shell,在这里可以输入 Python 代码,而且立刻会从 Python 解释器获得响应。(本文中列出的命令可以使用 Python 2.2.2 正确执行。如果您使用较早的版本,则可能产生不同的结果或发生错误。可以从 Python 网站下载最新版本 [请参阅参考资料]。)
清单 1. 以交互方式启动 Python 解释器
$ python
Python 2.2.2 (#1, Oct 28 2002, 17:22:19)
[GCC 3.2 (Mandrake Linux 9.0 3.2-1mdk)] on linux2
Type “help”, “copyright”, “credits” or “license” […]

Python读写Berlekey DB XML的例子

#!/usr/bin/env python
# $Id: examples.py,v 1.23 2005/09/25 23:36:42 gmf Exp $
# As of Python 2.3, there is a built-in module for Berkeley DB,
# called bsddb.  The next uncommented line assumes that module is being used.
# If you are using your own bsddb3 module, use this line:
#      from bsddb3.db import *
from bsddb3.db import *
from dbxml import *
 
book_content […]

Python转码的问题

字符串内码的转换,是开发中经常遇到的问题。
在Java中,我们可以先对某个String调用getByte(),由结果生成新String的办法来转码,也可以用NIO包里面的Charset来实现。
在Python中,可以对String调用decode和encode方法来实现转码。
比如,若要将某个String对象s从gbk内码转换为UTF-8,可以如下操作
s.decode(’gbk’).encode(’utf-8′)
可是,在实际开发中,我发现,这种办法经常会出现异常:
UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 30664-30665: illegal multibyte sequence
这是因为遇到了非法字符——尤其是在某些用C/C++编写的程序中,全角空格往往有多种不同的实现方式,比如\xa3\xa0,或者\xa4\x57,这些字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正的全角空格是\xa1\xa1),因此在转码的过程中出现了异常。
这样的问题很让人头疼,因为只要字符串中出现了一个非法字符,整个字符串——有时候,就是整篇文章——就都无法转码。
幸运的是,tiny找到了完美的解决办法(我因此被批评看文档不仔细,汗啊……)
s.decode(’gbk’, ‘ignore’).encode(’utf-8′)
因为decode的函数原型是decode([encoding], [errors=’strict’]),可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常;
如果设置为ignore,则会忽略非法字符;
如果设置为replace,则会用?取代非法字符;
如果设置为xmlcharrefreplace,则使用XML的字符引用。

Berkeley DB and python

Berkeley DB
产品首页 , 官方下载地址
Berkeley DB XML
产品首页 , 官方下载地址
首先,我们可以通过一个简单的例子来说明如何使用bsddb:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb import *
demodb = hashopen(’demo.db’, ‘c’)
for i in range(10):
    demodb[’%d’%i] = ‘%d’%(i*i)
我们通过一个简单的例子来说明,如何针对Berkeley DB XML来存储XML文档:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb.db import *
from dbxml import *
 
mgr = XmlManager()
uc = mgr.createUpdateContext()
 
container = mgr.openContainer("demo.dbxml", DB_CREATE)
 
filename = ‘demo’
fileContents = """<?xml version="1.0" encoding="UTF-8"?>
<result>OK</result>
"""
 
container.putDocument(filename, fileContents, uc)
在这个例子中,会创建一个名为demo.dbxml的数据库文件。
相应的,我们读取刚刚存储的内容,可以使用:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb.db import *
from dbxml import […]

Python编写MSN机器人

打算编写一个MSN机器人以便支持我的字典查询网站。
看了msnp的类,似乎能够满足我的基本需求。这些是一个简单的示例。

Python下的Lucene,PyLucene(转)

本文简单介绍了如何使用Python的Lucene创建全文检索方案。

python去掉html标签的函数

Python似乎没有像PHP那样方便的函数丢弃掉字符串中所有的HTML标签,下面是一个简单的函数达到该目的。

Pages (2): [1] 2 »