用Python生成文件的MD5校验码

Python中,用于加密的md5方法在hashlib模块中,使用非常简单:

from hashlib import md5
 
m = md5()           #获取一个MD5加密算法对象
m.update('string') #指定要加密的字符串
m.hexdigest()      #获取加密后的16进制字符串

文件的MD5校验码是根据文件的内容生成的信息摘要,方法如下,
Continue reading

用Python修改Excel文件

Python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。而xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。

因此对于读取和生成Excel文件都非常容易处理,但是对于已经存在的Excel文件进行修改就比较麻烦了。不过,还有一个xlutils(依赖于xlrd和xlwt)提供复制excel文件内容和修改文件的功能。其实际也只是在xlrd.Book和xlwt.Workbook之间建立了一个管道而已,如下图:

Python_excel

Continue reading

Google App Engine中开发中复用Django的syndication生成RSS

因为django.contrib.syndication.feeds用到了from django.contrib.sites.models import Site, RequestSite

而其中的Site和RequestSite又用到了Django的db模块,因此在GAE中是不能用的,看了看源代码,发现其实这两个类是可以不用的,于是我就想改动改动Django的代码来实现。
Continue reading

Google App Engine中的多对多关联

Google App Engine(GAE)中使用db.ReferenceProperty来处理实体之间的一对多关联,如Diary(日志)和Category(分类)是多对一的关系,可以简单配置如下:

1
2
3
4
5
6
7
8
class Category(db.Model):
    name = db.StringProperty( required = True)
<code>
class Diary(db.Model):
    title = db.StringProperty( required = True )
    content = db.TextProperty()
    category = db.ReferenceProperty(Category)
</code>

Continue reading