摘要: 学习python终归要能用到,由于工作中经常牵涉到文件批量重命名,拷贝及指定条件搜索,特别是后者,非常有用。先将递归搜索功能实现之:#encoding=utf-8'''Created on 2012-4-30@author: luhx'''import osnewdir = "" #递归搜索函数 def search(rootdir): #dirlist = [] print rootdir dirlist = os.listdir(rootdir) for item in dirlist: item = rootdir + 阅读全文
posted @ 2012-04-30 14:12 绿色的麦田 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 前面已经说完了怎样使用log4cxx进行日志记录,今天发现问题稍有点复杂。原因是系统中用到的一个dll已经使用了log4cxx。我们在开发的过程中也想使用log4cxx,但不想与DLL中的日志写到同一个文件中,问题就来了,怎样区别打印到不同的文件中呢,DLL中采用的为应该为getRootLogger的方式。这个网址中的文章很好,解决方案主要参考此文:http://www.open-open.com/doc/view/4bf2bd4f517c4044b1f7d4e2d22eccaflog4cxx主要是由三部分组成:loggers, appenders和layouts.这三个主要组成部分,协同协作 阅读全文
posted @ 2012-04-06 23:20 绿色的麦田 阅读(2013) 评论(0) 推荐(0) 编辑
摘要: 这个还真的没怎么看懂,先上代码,此代码即为函数装饰器的一种用法。回头再来看一遍。#!/usr/bin/env pythonfrom time import ctime, sleepdef tsfunc(func): def wrappedFunc(): print '[%s] %s() called' % ( ctime(), func.__name__) return func() return wrappedFunc@tsfuncdef foo(): passfoo()sleep(4)for i in range(2): ... 阅读全文
posted @ 2012-04-04 21:52 绿色的麦田 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 这个函数据说叫做函数发生器,看文档也没看明白,后来在网上看了一个用法,发现实际上相当于return 语句,如下代码:def addlist(alist): for i in alist: yield i + 1取出alist的每一项,然后把i + 1塞进去。然后通过调用取出每一项:alist = [1, 2, 3, 4]for x in addlist(alist): print x,结果为:2 3 4 5这个调用非常清晰,每到yield i + 1就相当于return i + 1,即执行到这儿,此函数就结束了,有了前面基本的认识,对于后面较高级用法有很大的作用。较高... 阅读全文
posted @ 2012-04-02 11:40 绿色的麦田 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 正则表达式的规则网上有一堆,先略过。对于初学者建议用vs2010中有一个python,里面的调试功能非常好用,可以很方便的看到一切信息。看到其中有一条贪婪模式和非贪婪模式的区别,这个要理解起来有点难度。示例代码:block = re.sub(r'(.+?)', r'hello\1_void()', r'*abc.efg*')#非贪婪模式,匹配尽可能少#输出结果block = 'hello*_void()helloa_void()hellob_void()helloc_void()hello._void()helloe_void()hell 阅读全文
posted @ 2012-04-02 00:45 绿色的麦田 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 关于数据库相关的,发现好麻烦,幸好找到了一个可解决的网站。win-psycopg安装可直接去此网站:http://stickpeople.com/projects/python/win-psycopg/ 阅读全文
posted @ 2012-03-31 11:47 绿色的麦田 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 一直想写个通讯协议的测试工具,理想是每增加一条协议,测试代码只需增加一个数据结构,即可完成从请求发送到数据返回所有数据的展示与跟踪,反正用C++我是做不到,用java好像也没成功,据说脚本功能强劲,考虑到python的广泛基础和与C++的结合紧密,学习之,看初始教学挺简单,希望能完成当初的愿望.终于看到对象这部分了,一个关于对象的简单的例子:class Person: def setName(self, name): self.name = name def getName(self): return self.name def greet(sel... 阅读全文
posted @ 2012-03-24 15:45 绿色的麦田 阅读(209) 评论(0) 推荐(0) 编辑
摘要: p15 阅读全文
posted @ 2012-03-13 22:31 绿色的麦田 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 上章提到的测试方法不能进行测试安装和测试清除。测试夹具可完成这样的功能。 定义全局测试夹具: BOOST_GLOBAL_FIXTURE(classGlobal) 定义套件测试夹具: BOOST_FIXTURE_TEST_SUITE(suitName, classSuit) 用法相对比较简单,直接上代码: // test_boost_suit2.cpp : 定义控制台应用... 阅读全文
posted @ 2012-03-06 23:38 绿色的麦田 阅读(1205) 评论(0) 推荐(0) 编辑
摘要: 据说相比之cppunit等其它的测试工具更好用,反正当初cppunit没能够在实际工作中派上用场,今天突然看到boost test库,而且是boost库内置的,研究一下。 test库将测试程序定义为一个测试模块,由测试安装,测试主体,测试清理和测试运行器四个部分组成。测试主体是测试模块的实际运行部分,由测试用例和测试套件组织成测试树的形式。 刚开始测试时,老是会报如下的链接错误: ... 阅读全文
posted @ 2012-03-05 23:57 绿色的麦田 阅读(3371) 评论(0) 推荐(0) 编辑