- 博客(53)
- 资源 (1)
- 收藏
- 关注
原创 Python获取操作系统版本信息
最近,想在我的YouMoney(http://code.google.com/p/youmoney/)里面增加提取用户操作系统版本信息。比如windows用户,可能要返回Windows XP ,或者Windows 2003, 苹果用户应该返回Mac OS X 10.5.8。用了很多办法,包括在mac系统里调用系统命令,取环境变量,等等。最后无意发现,原来python里里面有个platfor
2010-03-11 10:02:00
13870
2
原创 使用getopt解析命令行参数
感觉getopt比ConfigParser更简单。下面是getopt的解析方法 import os, sys, getoptdef test(): args = sys.argv[1:] # 解析命令行参数,a:bc:表示有-a -b -c三种参数,其中-a -c之后有:,表示还带参数,比如-a a111。而-b不带。 optlist, arg
2010-01-29 13:53:00
2119
原创 升级libtool带来的问题
今天新装了个linux系统。因为版本比较低,所以对libtool, automake, autoconf, m4, pkg-config进行了升级。结果没有想到出了一个很是奇怪的错误。是在编译一个程序时,configure已经过了,在make的时候报的错误。libtool: unrecognized option `--tag=CCTry `libtool --help for more
2007-08-16 15:46:00
7435
原创 这个blog暂时我不做更新的了,新的文章都写到www.pythonid.com上
新搞了个python的网站,可以通过http://www.pythonid.com 来访问。欢迎支持。
2007-07-11 23:34:00
1888
1
原创 发现一个用于windows下GUI自动化测试的东东
pywinauto is a set of python modules to automate the Microsoft Windows GUI. At its simplest it allows you to send mouse and keyboard actions to windows dialogs and controls. pywinauto是一些用于自动化
2007-07-04 09:49:00
3446
原创 python的__del__看来还是少用的好
今天在cu上看到一个朋友用类的__del__来做了一些处理,结果造成了线程的死锁。__del__应该是尽量不要用它,因为一个对象的销毁,不是我们可以随便简单的控制的。python对对象使用了引用计数来管理,很多情况下是很难以估计什么时候引用计数为是0而造成销毁的。原帖在这里: http://bbs.chinaunix.net/viewthread.php?tid=956078&extra=
2007-07-03 18:08:00
3951
原创 获取html页面的编码
html页面一般都会指定一个编码,如何获取到是处理html页面的第一步,因为错误的编码必然带来后面处理的问题。这里我用python的正则表达式写了个:import rea = ["", , , , , , ]b = ""B = re.compile(b, re.IGNORECASE)for ax i
2007-07-02 17:19:00
4060
原创 python模块之bsddb: bdb高性能嵌入式数据库 1.基础知识
bsddb模块是用来操作bdb的模块,bdb是著名的Berkeley DB,它的性能非常好,mysql的存储后端引擎都支持bdb的方式。这里简单介绍一些关于bsddb的使用方法。 bdb不同于一般的关系数据库,它存储的数据只能是以key和value组成的一对数据,使用就像python的字典一样,它不能直接表示多个字段,当要存储多个字段的数据时,只能把数据作为一个整体存放到value中
2007-06-25 14:29:00
14985
9
原创 用python格式化css文件
最近研究研究了css,少不了去网上分析一下别人的网页, 但很多网站的css文件都是要么写在一行,要么一个换行都没有,看起来极其痛苦,所以写一个脚本转换一下,转换为比较有可读性的格式。下面就是这个脚本:import string, sysimport re, StringIOTAB=4def format(ss): f = open (ss, "r") data = f.
2007-06-23 12:53:00
3319
原创 python的print对编码的处理
python的print会对输出的文本做自动的编码转换,而文件对象的write方法就不会做,因此,当一些字符串用print输出正常时,write到文件确不一定和print的一样。 print转换的目的编码和环境变量有关,Windows XP是转换为gbk的。在linux下是按照环境变量来转换的。在linux下使用locale命令就可以看到。比如我的是:[zhaowei@papaya
2007-06-22 17:11:00
23206
原创 把python程序用jython编译为java的jar包
jython是python的java版,他和c版本的python相比,它的优势是:可以编译为java的class文件被java程序使用,可以被java程序嵌入,可以使用java的类库。但目前jython的版本一直比较低,开发并不是很活跃,现在的最新版本是jython2.2。 这里我以一个简单的程序作为示例来看看怎么把python程序编译为java的jar包。注意的是:并不是所有的py
2007-06-19 10:00:00
18511
10
原创 python模块之threading: 在python中使用多线程
python是支持多线程的,并且是native的线程。主要是通过thread和threading这两个模块来实现的。thread是比较底层的模块,threading是对thread做了一些包装的,可以更加方便的被使用。这里需要提一下的是python对线程的支持还不够完善,不能利用多CPU,但是下个版本的python中已经考虑改进这点,让我们拭目以待吧。 threading模块里面主要
2007-06-18 11:51:00
2927
原创 python模块之StringIO
StringIO经常被用来作为字符串的缓存,应为StringIO有个好处,他的有些接口和文件操作是一致的,也就是说用同样的代码,可以同时当成文件操作或者StringIO操作。比如:import string, os, sysimport StringIOdef writedata(fd, msg): fd.write(msg) f = open(aaa.txt,
2007-06-18 10:52:00
8776
原创 在多线程中使用sqlite太恶心了
万万没有想到sqlite模块在多线程中有问题,只能被创建sqlite连接的线程使用,其他线程根本就不能使用!否则必然报错误,太恶心了。现在看来唯一的办法是在每个线程中都创建一个连接,每个线程自己操作数据库。这个每个线程中的连接,可以用连接池的方式事先创建好,也可以每次操作的时候重新建立。 由此看来,当在python中要使用嵌入式数据库就一定要考虑并发、多线程的情况,这方面sqlite实
2007-06-17 23:18:00
9065
4
原创 关于cookie的httponly属性
httponly是微软对cookie做的扩展。这个主要是解决用户的cookie可能被盗用的问题。 大家都知道,当我们去邮箱或者论坛登陆后,服务器会写一些cookie到我们的浏览器,当下次再访问其他页面时,由于浏览器回自动传递cookie,这样就实现了一次登陆就可以看到所有需要登陆后才能看到的内容。也就是说,实质上,所有的登陆状态这些都是建立在cookie上的!假设我们登陆后的cook
2007-06-15 20:51:00
9006
原创 python模块之MySQLdb: 用python连接mysql数据库
mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法。python操作数据库需要安装一个第三方的模块,在http://mysql-python.sourceforge.net/有下载和文档。 由于python的数据库模块有专门的数据库模块的规范,所以,其实不管使用哪种数据库的方法都大同小异的,这里就给出一段示范的
2007-06-13 22:02:00
4834
1
原创 python模块之ConfigParser: 用python解析配置文件
在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单的做一些介绍。 ConfigParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项,比如: [db]db_host=12
2007-06-13 21:03:00
16701
1
原创 python模块之HTMLParser: 解析html,获取url
HTMLParser是python用来解析html的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它主要的用户回调函数的命名都是以handler_开头的,都是HTMLParser的成员函数。当我们使用时,就从HTMLP
2007-06-13 09:58:00
22003
1
原创 python模块之uuid
uuid是一种唯一标识,在许多领域作为标识用途。python的uuid模块就是用来生成它的。闲话不说,python提供的生成uuid的方法一共有4种,分别是:1.从硬件地址和时间生成2.从md5算法生成3.随机生成4.从SHA-1算法生成他们在uuid模块里对应uuid1, uuid3, uuid4, uuid5这几个方法,注意没有uuid2。下面是示例: #-*- encoding: g
2007-06-12 23:43:00
7508
1
原创 python模块之codecs: 自然语言编码转换
python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理。 有一点需要清楚的是,当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的: 原有编码 -> 内部编码 -> 目的编码 python的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种
2007-06-07 11:45:00
56331
5
原创 python模块之hashlib: md5和sha算法
hashlib是个专门提供hash算法的库,现在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。 md5经常用来做用户密码的存储。而sha1则经常用作数字签名。下面看看代码吧:#-*- encoding:gb2312 -*-import hashliba = "a test string"print hashl
2007-06-06 13:22:00
47510
1
原创 python模块之smtplib: 用python发送SSL/TLS安全邮件
转载请注明原文出自 http://blog.csdn.net/zhaoweikid/ python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。smtp协议的基本命令包括: HELO 向服务器标识用户身份 MAIL 初始化邮件传输 mail from: RCPT 标识单个的邮件接收人;常在MAIL命令后面,可有多个rcpt t
2007-06-04 23:16:00
27384
3
原创 python模块之poplib: 用pop3收取邮件
python的poplib模块是用来从pop3收取邮件的,也可以说它是处理邮件的第一步。 POP3协议并不复杂,它也是采用的一问一答式的方式,你向服务器发送一个命令,服务器必然会回复一个信息。pop3命令码如下: 命令 poplib方法 参数 状态 描述-------------------------------------------------------
2007-06-03 12:17:00
10545
原创 python模块之email: 电子邮件编码解码 (二、编码邮件)
用email模块来生成邮件也是很简单的,只是需要一些mime的基础知识。下面看看一点mime基础。MIME消息由消息头和消息体两大部分组成,在邮件里就是邮件头和邮件体。邮件头与邮件体之间以空行进行分隔。这点可以用文本编辑器(比如记事本)查看一个邮件的源文件就可以清除看到。outlook和foxmail自己就有查看源文件的功能。 邮件头包含了发件人、收件人、主题、时间、MIME版本、邮件内容的类型
2007-06-02 14:09:00
6872
原创 用iconv做通用的语言编码转换
以前我写了一个gb18030到utf-8编码转换的程序,这段代码还是有些问题的,因为现在我需要对任意的两个iconv支持的语言编码做互相转换,比如GB2312, GBK, GB18030, UTF-8, UTF-16, BIG5等等,所以才有了这段程序,注释我不加了。目前这段代码是非常的稳定,测试了超过10万行的数十种编码的文本的转换都没有出问题。 #include stdio.h>
2007-06-01 22:37:00
2076
原创 python模块之email: 电子邮件编码解码 (一、解码邮件)
python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用。处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件:Received: from 192.168.208.56 ( 192.168.208.56 [192.168.208.56] ) by ajax-webmail-wmsvr37 (Coremail)
2007-06-01 22:00:00
22711
原创 关于python使用pyrex编译成可执行文件的问题
转自我在百度的blog: http://hi.baidu.com/python23/ 这个问题是相当有意义的,如果有了比较好的方法,python完全可以用来开发商业软件,而不用担心源代码泄露。 前两天我在网上看了看,有很多的人在问这个问题。大部分的人都在用py2exe,这是个对python程序打包的东东,实际上只是在python程序中找 出依赖的模块,然后发布这个程序。好处在
2007-06-01 20:19:00
5719
1
原创 python模块之sqlite数据库
sqlite是非常著名的开源嵌入式数据库软件,它可以嵌入到其他程序中使用,并且提供SQL接口用来查询,非常方便。它的官方站点为http://www.sqlite.org。 windows版本的python2.5已经自带了sqlite3这个模块,是可以直接使用的。python的数据库模块有统一的接口标准,所以数据库操作都有统一的模式,基本上都是下面几步(假设数据库模块名为db):1.
2007-06-01 15:03:00
2352
原创 python模块之quopri: quoted-printable编解码
quopri模块和base64模块有点象,都是用来编码和解码的,且base64和quoted-printable这两种编码都是在电子邮件中常见的编码。quoted-printable的编码方法为: 英文字符除了=以外不做处理,其他字符的编码为=加这个字符的两个字节的16进制数。行尾可用"=/r/n"。quopri模块只需要使用它的encode,decode,encodestring,decodes
2007-05-31 23:10:00
7050
原创 python模块之base64
这篇文章转自我在百度的blog: http://hi.baidu.com/python23/ base64模块是用来作base64编码解码的。这种编码方式在电子邮件中是很常见的。 它可以把不能作为文本显示的二进制数据编码为可显示的文本信息。编码后的文本大小会增大1/3。 闲话不说了,base64模块真正用的上的方法只有8个,分别是encode, decode, encode
2007-05-31 22:26:00
19849
2
原创 python模块之zipfile
这篇文章是从我的另一个blog转过来的: http://hi.baidu.com/python23/ zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的,在这里对zipfile的使用方法做一些记录。即方便自己也方便别人。 zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的
2007-05-30 11:40:00
27822
2
原创 Oracle9i数据库的启动关闭
数据库启动:[zhwei@nw bin]$ sqlplus " / as sysdba"SQL> startup数据库关闭:[zhwei@nw bin]$ sqlplus " / as sysdba"SQL> shutdown启动Oracle 9i监听程序:[zhwei@nw bin]$lsnrctlLSNRCTL> start关闭Oracle 9i监听程序:zhwei@nw bin]$lsnrc
2005-03-06 03:12:00
1878
原创 Linux下编译动态链接库
可用以下两条命令编译动态链接库:gcc -fPIC -c dllname.ccgcc -shared -o dllname.so dllname.o在宿主程序中使用dlopen、dlsym、dlclose和dlerror四个函数调用动态链接库。宿主程序使用这几个函数时要加上#include。
2005-03-06 02:55:00
2496
原创 关于检测TCP非正常断开的问题
假设是server端判断client的断开:1)client 关闭socket, 这是正常的情况,server段recv返回0,server就关闭socket就可以了。2)网络断开,需要keepalive的在线维持,tcp默认的的keepalive时间为7200秒,时间很长; 也可以在tcp数据流中keepalive,自己在tcp流中定时在线维持包,不过这样要求tcp流可以拆 成包;或
2005-03-06 02:52:00
1904
原创 ANSI控制码的说明
例如: echo -ne "/33[32m" 可以将字符的显示颜色改为绿色 echo -ne "/33[3;1H" 可以将光标移到第3行第1列处 具体如下: /33[0m 关闭所有属性 /33[1m 设置高亮度 /33[4m 下划线 /33[5m 闪烁 /33[7m 反显 /33[8m 消隐 /33[30m -- /33[37m 设置前景色 /33[40m -- /33[47m 设置背景色 /33
2005-03-06 02:39:00
1369
原创 用iconv实现的gb18030到utf-8的编码转换
因为最近写了一个用来更新postgresql数据库内容的C++程序,而postgresql使用的是UTF-8的编码,所以需要做编码转换,当然就想到了iconv,就写了一个函数。在Redhat AS3上调试通过。string gb18030_to_utf_8(const string &src){ string re; const char *sfrom = src.c_str(); si
2005-03-03 03:08:00
6979
原创 路由器和交换机的区别(转)
路由器是产生于交换机之后,就像交换机产生于集线器之后,所以路由器与交换机也有一定联系,并不是完全独立的两种设备。路由器主要克服了交换机不能路由转发数据包的不足。总的来说,路由器与交换机的主要区别体现在以下几个方面: (1)工作层次不同 最初的的交换机是工作在OSI/RM开放体系结构的数据链路层,也就是第二层,而路由器一开始就设计工作在OSI模型的网络层。由于交换机工作在OSI的第二层(数据链路
2004-12-19 23:02:00
3764
原创 Solaris 9 下8139网卡的安装
在自己机器上装了个Solaris 9(x86),发现居然不能认出我的网卡,在BSD和Linux下可是认的好好的!没办法,只好重新配置了一下。1,下载solaris-8139(105).zip,解压缩,里面有Install,rtls,solaris-Readme.txt这几个文件。2,运行Install3,在/etc下面创建hostname.rtls0,在/下面创建reconfigure文件
2004-12-13 18:48:00
1286
原创 Linux中让xmms显示中文
我一直用的Mandrake,它的桌面的确是做的好,就是在听歌的时候xmms不能显示中文,后来找到一个办法,把它的字体修改一下,改成 -sony-*-*-*-*-*-16-*-*-*-*-*-iso8859-1,-*-*-*-*-*-*-16-*-*-*-*-*-gbk-0就可以了,在我的Mandrake 10 里可以非常好的显示中文的歌名。
2004-12-13 18:27:00
1996
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人