python的logging [转自python mail list]

我们知道在java或者.net中大部分都是使用apache的log4…, python里面本身就自带了logging模块。同样在django中也可以用: 1.Setting.py中设置 LOG_FILE = "log.log" 2.创建utils/log.py: import logging from django.conf import settings def getlog(): logger = logging.getLogger() hdlr = logging.FileHandler(settings.LOG_FILE) formatter = logging.Formatter('%(asctime)s %(levelname)s % (message)s') hdlr.setFormatter(formatter) logger.addHandler(hdlr) logger.setLevel(logging.NOTSET) return logger 3.使用: from utils import log log.getlog().debug("dddddd") 你就可以看到你的django project的根目录下有一文件log.log 2007-02-13 07:02:07,780 DEBUG dddddd 更多参考: http://www.onlamp.com/pub/a/python/2005/06/02/logging.html On 2/13/07, map...@gmail.com wrote: 我们知道在java或者.net中大部分都是使用apache的log4…, python里面本身就自带了logging模块。同样在django中也可以用: 嗯嗯嗯!比俺使用的聪明,俺是生硬的直接使用 每个需要的py 中: import logging logging.basicConfig(level=logging.DEBUG, format='[%(asctime)s]%(levelname)-8s"%(message)s"', datefmt='%Y-%m-%d %a %H:%M:%S', filename='bo_update.log', filemode='a+') ... logging.debug("Line: %s updated..." % (line_ref)) 实际应用时建议使用...

2009-10-08 · 1 分钟 · admin

接收邮件的smtpserver

一个可以接收邮件的smtpserver. 收到的邮件被存为一个eml格式的文件,可以用outlook打开。 注意: 需要事先配置域名,指向这台机器所在的IP。免费的动态域名(如花生壳)也可。 #encoding:utf-8 from datetime import datetime import asyncore from smtpd import SMTPServer class EmlServer(SMTPServer): no = 0 def process_message(self, peer, mailfrom, rcpttos, data): filename = '%s-%d.eml' % (datetime.now().strftime('%Y%m%d%H%M%S'),self.no) f = open(filename, 'w') f.write(data) f.close print mailfrom,rcpttos,'%s saved.' % filename self.no += 1 def run(): foo = EmlServer(('0.0.0.0', 25), None) try: asyncore.loop() except KeyboardInterrupt: pass if __name__ == '__main__': run() 转自 http://www.javaeye.com/topic/382229

2009-10-05 · 1 分钟 · admin

django Admin管理界面的激活方法,The Django Admin Site problem(No module named urls)

problem description: 1,向你的模型添加admin metadata 并不是所有的模型都可以或者应该被admin用户编辑,所以你需要标记那些需要管理界面的模型 上一章的Book模型添加一个管理界面的方法就是: class Book(models.Model): title = models.CharField(maxlength=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) publication_date = models.DateField() class Admin: pass Admin声明标记这个类拥有一个管理界面,在Admin之下你可以配置许多选项 目前我们采用默认值,所以我们使用pass来表示Admin类是空的 如果你正在按这个例子写自己的代码,现在给Publisher和Author类添加Admin声明是个好主意 2,安装admin模型,简单的把"django.contrib.admin"添加到你的INSTALLED_APPS设置里 然后运行python manage.py syncdb来安装admin使用的额外的表 注意,在你第一次运行syncdb时,你很可能被问起是否创建一个superuser 如果那时你没有创建superuser,你需要运行djang/contrib/auth/bin/create_superuser.py 来创建一个admin用户,否则你就不能登录到管理界面里去 3,把URL模式添加到urls.py,如果仍在使用startproject创建的工程,admin的URL模式可能 已经在那儿了,但是被注释掉了,你的URL模式应该像这样: from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^admin/', include('django.contrib.admin.urls')), ) 就这样,现在运行python manage.py runserver来启动服务器,你将看到如下信息: Validating models… 0 errors found. Django version 0.96-pre, using settings ‘mysite.settings’ Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C....

2009-09-30 · 1 分钟 · admin

在Windows上安装Python+MySQL 的常见问题及解决方法

验证是否已经安装了MySQLdb: ========================================================== d:\usr\local\Python25>python Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] onwin32 Type "help", "copyright", "credits" or "license" for more information. >>> import MySQLdb Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named MySQLdb ========================================================== 如果有类似于上面的"No module named MySQLdb",表明MySQLdb尚未安装或安装的不成功! MySQL 版本:5.0.67 下载地址:http://dev.mysql.com/downloads/mysql/5.0.html#downloads 下载exe文件并安装 ========================================================== Python 版本:2.5 下载地址:http://www.python.org/download/releases/2.5.4/ 下载msi文件并安装 MySQLdb版本: MySQLdb Windows binary for Python 2.5 下载地址:http://biohackers.net/wikiattach/Python2(2e)5/attachments/MySQL-python.exe-1.2.1_p2.win32-py2.5.exe 参见:http://forums.mysql.com/read.php?50,129618,140611#msg-140611 常见问题: 1.无法定位程序输入点 mysql_server_init 于动态链接库 LIBMYSQL....

2009-09-28 · 2 分钟 · admin

Python代码加密 源码保护--pyc文件'字节码'

内容概要:Python代码加密,源码保护,代码保护,pyc文件 关于python代码保护在网上好像一直没有很好的介绍,可能和PYTHON的设计初衷"开源"有关,但越来越多的兄弟写的加入PYTHON阵营,开发工具用途各异,在商业应用中代码保护就变的重要了. 下面介绍一下发布PYC文件,做简单代码保护 PYC文件是什么? pyc文件是python的二进制编译,pyc文件比py文件拥有更快的装载速度,执行速度没有区别。 因为pyc文件是二进制文件,不是明文显示,利用这一特性,发布PYC文件隐藏源代码. 命令如下: python -c “import compileall; compileall.compile_dir(‘目录’)” 该命令可以为一个目录下的py文件生成pyc文件(包含子目录) 在windows平台上的路径书写方式为(‘C:/python26/pyc’) 下面符一完整命令: 将目录’C:/python26/pyc’下的所有PY文件 转为PYC文件 python -c "import compileall; compileall.compile_dir('C:/python26/pyc')" 如果想实现真正的加密代码,就要改PYTHON源码,做自己的加密模块了,这方面还没深入了解,不便多说. 关于代码加密这块如哪位兄弟还有更好的方法,请多指教. Python代码加密,源码保护,代码保护,pyc文件 转自http://blog.alexa-pro.cn/?p=349

2009-09-09 · 1 分钟 · admin

开始学习python

原来一直想学这个,但是没有机会,在新项目中的聊天室,打算用python+flex+socket 来实现,效率还不知道,正好顺便学学 python ,看它的语法,感觉还是很简洁的,不过习惯php 了,老是想以 php 的写法来写,这个比较郁闷了!

2009-08-16 · 1 分钟 · admin

关于C和Python之间通信的方法

这些天在做一个项目,前端使用python来作,便于快速开发,底层使用C来写,效率高,速度快。这样就牵扯到二者之间的通信问题。我查了相关文档,发现有以下几种解决方式: 使用标准的数据表示形式,比如xml或者xdr,然后在C和python两端都有自己的相应的库,可以对这些数据进行解释,自然就可以通信了。 在C中定义一个结构对象,把它打包成二进制形式(python把它作为字符串来解释),然后使用python中的struct模块的pack函数来解析,这样就牵扯到一个解析格式串的问题,一个简单的方式是在c和python两端定义对应的两套数据结构,分别有自己的pack和unpack函数,它们可以对中间结果---二进制串,进行解析,这样就可以实现通信了。在python那一端还可以使用array模块,处理类型统一的数据,特别方便,有时候比用struct模块要爽! 使用一个xml文件将C中定义的结构都包含进去,然后在python那一端进行解析这个xml文件,自然就知道如何对每个C中的struct对象进行解析了,这样扩展性好一些。 使用第三方的库,我所知道的有boost.python和ctypes,具体怎样我也没有是用。 我在实现的时候使用了第2种方式,下面举个例子: 在c中有这样一个结构: typedef struct test_tag { int a; int b; }test_t; char* test_pack(test_t* ptr){ char * p=NULL; p = (char *) malloc(sizeof(test_t)); memcpy(p,ptr,sizeof(test_t)); return p; } test_t* test_unpack(char* ptr){ test_t* p=NULL; p=(test_t *)malloc(sizeof(test_t)); memcpy(p,ptr,sizeof(test_t)); return p; } 在python端有这样的对应数据结构: class test: format='2i' members=('a','b') def __init__(self): for item in test.members: self.__dict__[item]=-1 def pack(self,order='@'): return struct.pack(order+test.format,self.a,self.b) def pack2(self,order='@'): bin=array.array('l') for item in test.members: bin.append(self.__dict__[item]) if (sys.byteorder=='little' and order=='>') or (sys....

2009-08-16 · 1 分钟 · admin