Python
JGood
这个作者很懒,什么都没留下…
展开
-
用Python写的图片蜘蛛人
原文地址:http://www.darkbull.net/python/bd/%E5%86%99%E4%B8%AA%E5%9B%BE%E7%89%87%E8%9C%98%E8%9B%9B%E7%8E%A9%E7%8E%A9/ 写了个图片蜘蛛人玩玩,抓了几个网页试试,感觉不不错。核心的代码可能20行也不到,简洁明了,嘻嘻。废话少说,翠花,上代码~~#coding=utf-8im原创 2010-04-10 23:32:00 · 7132 阅读 · 6 评论 -
Python模块学习 ---- filecmp 文件比较
filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单。python标准库还提供了difflib模块用于比较文件的内容。关于difflib模块,且听下回分解。 filecmp定义了两个函数,用于方便地比较文件与文件夹: filecmp.cmp(f1, f2[, shallow]): 比较两个文件的内容是否匹配。参数f1原创 2010-04-08 10:53:00 · 7409 阅读 · 2 评论 -
Python模块学习 ---- datetime
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块我在之前的文章已经有所介绍,它提供的接口与C标准库time.h基本一致。相比于time模块,datetime模块的接口则更直观、更容易调用。今天就来讲讲datetime模块。 datetime模块定义了两个常量:datetime.MINYEAR和datetime原创 2010-04-07 11:02:00 · 60623 阅读 · 2 评论 -
python模块学习 ---- Cookie
最近在用GAE开发自己的博客程序。虽然GAE的API没有显式的提供操作Cookie的方法,但他现有的架构,使我们有足够的自由来操作Cookie。 Cookie模块,顾名思义,就是用来操作Cookie的模块。Cookie这块小蛋糕,玩过Web的人都知道,它是Server与Client保持会话时用到的信息切片。Http协议本身是无状态的,也就是说,同一个客户端发送的两次原创 2010-04-02 23:18:00 · 5720 阅读 · 0 评论 -
Python模块学习 ---- atexit
atexit模块很简单,只定义了一个register函数用于注册程序退出时的回调函数,我们可以在这个回调函数中做一些资源清理的操作。 注:如果程序是非正常crash,或者通过os._exit()退出,注册的回调函数将不会被调用。 我们也可以通过sys.exitfunc来注册回调,但通过它只能注册一个回调,而且还不支持参数。所以建议大家使用atexit来原创 2010-04-19 21:47:00 · 7522 阅读 · 0 评论 -
Python模块学习 --- urllib
urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据。每当使用这个模块的时候,老是会想起公司产品的客户端,同事用C++下载Web上的图片,那种“痛苦”的表情。我以前翻译过libcurl教程,这是在C/C++环境下比较方便实用的网络操作库,相比起libcurl,Python的urllib模块的使用门槛则低多了。可能有些人又会用效率来批评Python,其原创 2010-04-16 15:13:00 · 47726 阅读 · 7 评论 -
简洁,简单,再简化...
最近在对服务器代码进行了重构,去除了一些被动的因素,改起来,思想上好受多了。 Python崇尚简单,不要复杂。在写配置文件的时候,并不一定要写到xml中,直接写在python中就可以了。写到xml中,即使使用最简单的dom来解析,也要写许多代码,直接写在python中,简单明了,又不出错,哦yeah...原创 2010-03-24 00:11:00 · 1160 阅读 · 0 评论 -
再次封装IOCP的收获
以前写过一篇用python封装IOCP的文章,这几天因朋友需要,再一次封装了iocp接口。这一次我并不是简单的把原有代码拿过来简单的修修改改,基本上是推到重来。改正第一次封装时的许多缺点,同时修正了许多bug,再回首看以前的代码,感觉自己在进步。这次封装iocp,收获了以下几点知识: 1. 数据的重复投递。一般情况下,一个Socket句柄在同一时刻最多只能有一次WSASend与SWARe原创 2010-01-17 23:19:00 · 4668 阅读 · 27 评论 -
Python模块学习 ---- tempfile 临时文件(夹)操作
应用程序经常要保存一些临时的信息,这些信息不是特别重要,没有必要写在配置文件里,但又不能没有,这时候就可以把这些信息写到临时文件里。其实很多程序在运行的时候,都会产生一大堆临时文件,有些用于保存日志,有些用于保存一些临时数据,还有一些保存一些无关紧要的设置。在windows操作系统中,临时文件一般被保存在这个文件夹下:C:/Documents and Settings/User/Local原创 2009-10-28 19:51:00 · 11602 阅读 · 0 评论 -
被疏忽的一段Python语法
python提供了有序(sequence)类型(字符串,元组,列表都是有序类型),并且提供了特殊的语法来方便对这些类型进行操作,最常用的有切片操作。同一有序类型的对象之间支持”+”操作符,用来连成一个新的有序对象,有序对象也可以与一个整数进行相乘,得到一个新的有序对象。在调试的时候,我经常使用这样的语句来打印一个分割行:print ‘-‘ * 50。在对有序类型进行“*” 或者 “+”操作原创 2009-11-03 20:10:00 · 1620 阅读 · 1 评论 -
Python模块学习 ---- zlib 数据压缩
Python标准模块中,有多个模块用于数据的压缩与解压缩,如zipfile,gzip, bz2等等。上次介绍了zipfile模块,今天就来讲讲zlib模块。 zlib.compress(string[, level]) zlib.decompress(string[, wbits[, bufsize]]) zlib.compress用于压缩流数据。参数string指定了要压缩的数据流,参数原创 2009-09-28 19:24:00 · 10840 阅读 · 2 评论 -
python版本问题导致Boost.Python无法正常使用
<br /> (www.darkbull.net)<br /> 今天打算将Python集成到项目中作为脚本语言,主要用于处理字符串与网络交互(如发送邮件,提交http请求等)。Boost.Python组件提供了非常方便的接口,使Python集成到C/C++项目中变得十分容易。今天在运行以前写的例子时,发现无法运行,不管是在Python中调用C++扩展库还是在C++中调用Python。在Python中调用C++扩展模块,提示的错误是:Dll load failed: 找不到指定的模块。而在C++中原创 2010-08-08 22:29:00 · 3028 阅读 · 0 评论 -
跨语言使用对称加密
<br /> 这两天在写GM工具,使用wxPython开发,GM工具需要与Web服务器进行简单的交互,Web服务器是用.NET写成。一些关键的数据在传输的过程中进行了加密。.NET有非常完整的加密库,使用也很方便,翻箱倒柜从以前的代码中整了一些对称加密算法出来。而Python标准模块只提供一些hash加密算法,没有提供私钥加密与共钥加密算法,但是借助于开源社区强大的威力,可以很方便的找到加密库。从网上找了一pyDes模块,它实现了DES与TripleDES算法,经过简单的测试,用.NET加密,用原创 2010-09-16 17:27:00 · 3510 阅读 · 0 评论 -
python写的进程守护者
<br /> 用Python写的一个守护者,核心的代码不到10行。这个方法是由同事想到的,我把核心的代码提出来,真是太cool了:import os, subprocessdef Run(): while True: taskList = os.popen('tasklist').read() for path, exe in [os.path.split(line.strip()) for line in open('config')原创 2010-10-23 16:33:00 · 4212 阅读 · 2 评论 -
QQ微博开放平台的python封装
原文地址:http://darkbull.net/opensource/bdb/python_qq_weibo_sdk/ 玩应用开发,就用python写了一个QQ微博开放平台的封装,就一个文件,包括了文档中所描述的所有接口,非常简单。可以在这里下载:http://code.google.com/p/python-qweibo。简单的调用例子:import webbrowser原创 2011-10-23 18:09:58 · 3261 阅读 · 0 评论 -
python封装新浪api时遇到的一些问题
虽然网上有python的sdk,但怎么看怎么不舒服。算了,自己动手,丰衣食足。 封装的时候,出现source parameter appkey missing. 按网上说的做,无法解决。用抓包工具仔细分析,仍然没有发现问题。同样的低层通信代码提交到QQ微博的时候没有任何问题。仔细阅读oauth协议,将oauth_参数放到http headers的authoriation,错误变成了签名不原创 2011-10-25 00:11:36 · 3088 阅读 · 0 评论 -
HTTP请求截取器
写了一个Http请求截取器,写Web时偶尔会用到。需要wxPython环境。点击下载原创 2010-12-10 16:28:00 · 4340 阅读 · 3 评论 -
iocp的python封装(续)
原文地址:darkbull.net/python/bca/pyiocp/原创 2011-07-22 21:34:56 · 3696 阅读 · 2 评论 -
Python封装IOCP
2011-07-22:源码下载:http://blog.csdn.net/jgood/article/details/6626872 Python是一门简洁而优雅的语言,她的高生产率使我们能用最少的人力、物力、时间、财力代价解决眼前的问题。但是当解决了眼前的问题,一些更长远的问题就不得不考虑。 利用Python自带的socket模块写网络服务器程序,很难能够承受上千个连接。我曾原创 2009-10-21 23:02:00 · 4869 阅读 · 11 评论 -
评书下载机器人
源文地址:http://blog.darkbull.net/python/bbb/pingshu_download_robot/ 源码下载 本文内容仅供学习之用。 晚上睡觉的时候,我喜欢听评书,在听书中进入梦乡。我经常上的评书网站是:www.5ips.net,这里的评书不用注册就可以下载,非常方便。昨天突发奇想,为什么不写个机器人,将我喜欢的评书统统下载下来,原创 2011-06-13 00:06:00 · 3258 阅读 · 0 评论 -
python访问纯真IP数据库
<br /> 项目中有这样的需求,通过IP地址判断客户端是网通的还是电信的。从同事那拿了个纯文本的IP纯真数据库,用Python写了一个小程序,感觉挺好的。点击这里查看例子。<br />源码下载<br />#!/usr/bin/env python# -*- coding: utf-8 -*-from bisect import bisect_LIST1, _LIST2 = [], []_INIT = Falseip2int = lambda ip_str:原创 2011-03-28 23:11:00 · 4039 阅读 · 1 评论 -
将阿拉伯数字转换成中文
源文出版:http://darkbull.net/99/%E5%B0%86%E9%98%BF%E6%8B%89%E4%BC%AF%E6%95%B0%E5%AD%97%E8%BD%AC%E6%8D%A2%E6%88%90%E4%B8%AD%E6%96%87 周末在家,写了个小程序,用于将阿拉伯数字转换化大写中文。程序没经过任何优化,出没经过详细的测试,挂到网上,方便将来有需要的时候直接拿来用。源码测试代码#!/usr/bin/python#-*- encoding: utf-8 -*-imp原创 2011-03-21 12:48:00 · 2888 阅读 · 0 评论 -
Python模块学习 ---- fileinput
<br /> 这几天有这样一个需求,要将用户登陆系统的信息统计出来,做成一个报表。当用户登陆成功的时候,服务器会往日志文件里写一条像下面这种格式的记录:”日期时间@用户名@IP“,这样的日志文件第天生成一个。所以,我们只要编历这些日志文件,将所有的登陆信息提取出来,并重新组织数据格式就可以了。用python写一个分析工具非常简单,你会说,用glob获取所有的日志文件,然后对每个日志文件都open(logfile),再一行一行的读取;或者用os.walk,也很简单。其实,标准库提供了另一个辅助模块,我们原创 2010-11-03 14:10:00 · 7013 阅读 · 1 评论 -
python模块学习 ---- anydbm, shelve
<br /> 好久没写这系列的文章了,我越来越喜欢用python了,它在我的工作中占据的比例越来越大。废话少说,直接进入主题。 anydbm允许我们将一个磁盘上的文件与一个“dict-like”对象关联起来,操作这个“dict-like”对象,就像操作dict对象一样,最后可以将“dict-like”的数据持久化到文件。对这个"dict-like"对象进行操作的时候,key和value的类型必须是字符串。下面是使用anydbm的例子: #coding=utf-8import原创 2010-10-29 15:09:00 · 8385 阅读 · 0 评论 -
Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
上次学习过marshal模块用于序列化和反序列化,但marshal的功能比较薄弱,只支持部分内置数据类型的序列化/反序列化,对于用户自定义的类型就无能为力,同时marshal不支持自引用(递归引用)的对象的序列化。所以直接使用marshal来序列化/反序列化可能不是很方便。还好,python标准库提供了功能更加强大且更加安全的pickle和cPickle模块。 cPickle模块是使用C语原创 2009-09-17 19:20:00 · 26750 阅读 · 2 评论 -
Python模块学习 ---- marshal 对象的序列化
有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。 注意:marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在不原创 2009-09-12 12:59:00 · 5986 阅读 · 1 评论 -
汉字拼音数据库
前些天,一位同事需要在网页上根据拼音缩写代表的汉字进行对数据库的查询。今天闲着没事,就专门从网上找了一些拼音方面的资源,提取、简化放到了数据库里。并根据这个拼音数据库,做了一个简单的网页。N久没写web了,今天写的时候,感到手很生,不过还好,还没全忘记,写Web的感觉还在。先看看我的成果吧~_~。输入拼音,对应的汉字就会显示出来。 我使用的数据库是Sqlite,制作的Web有两个版原创 2009-09-13 09:19:00 · 3113 阅读 · 0 评论 -
Python模块学习 ---- glob 文件路径查找
glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:"*", "?", "[]"。"*"匹配0个或多个字符;"?"匹配单个字符;"[]"匹配指定范围内的字符,如:[0-9]匹配数字。glob.glob 返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里原创 2009-06-20 23:26:00 · 3504 阅读 · 0 评论 -
使用Python调用C语言编写的链接库
Python可以调用用C/C++编写的动态库。动态库要被Python调用,必须做一些额外的封装操作。原创 2009-06-19 17:31:00 · 327 阅读 · 0 评论 -
一行逻辑错误,但语法没有错误的代码
用C++调用windows API进行非阻塞TCP通信,其中一行代码被我写成了如下:if (SOCKET_ERROR == (sock, (sockaddr *)&addr, sizeof(addr))){ cout << "Bind Failed" << endl; WSACleanup(); return 0;} 这段代码编译没有任何错误与警告,但结果并不是原创 2009-08-23 09:30:00 · 1506 阅读 · 0 评论 -
Python模块学习 ---- re 正则表达式
今天学习了Python中有关正则表达式的知识。关于正则表达式的语法,不作过多解释,网上有许多学习的资料。这里主要介绍Python中常用的正则表达式处理函数。re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。import retext = "JGood is a handsome boy, he is cool, clever,原创 2009-06-17 23:19:00 · 38829 阅读 · 6 评论 -
Python对象创建过程
object.__new____init__ class ClassA(object): def __init__(self, name, age, address): self.name = name self.age = age self.address = address def toString(self):原创 2009-06-17 15:58:00 · 323 阅读 · 0 评论 -
Python模块学习 ---- hashlib hash加密
不积跬步,无以至千里;不积小流,何以成江海. 每天学习一个Python模块,一个月可以了解30个模块,一年可以... ... 今天看了一个Python中的hashlib及hmac模块,这两个模块用来hash加密。说到加密,首先要了解加密的基本知识:hash加密,对称加密,不对称加密,数字签名等等。相关的知识可以在msdn上查阅:http://msdn.microsoft.c原创 2009-06-17 14:17:00 · 20061 阅读 · 4 评论 -
Python数据模型 ---- Data model
Data modelObjects, values and typesObjects are Python’s abstraction for data. All data in a Python program is represented by objects or by relations between objects. (In a sense, and in翻译 2009-06-14 22:31:00 · 927 阅读 · 0 评论 -
使用minidom来处理XML的示例(二)--XML的写入
原文地址:http://blog.donews.com/limodou/archive/2004/07/15/43609.aspxhttp://blog.donews.com/limodou/archive/2004/07/15/43755.aspx 在 NewEdit 中有代码片段的功能,代码片段分为片段的分类和片段的内容。在缺省情况下都是用XML格式转载 2009-08-15 15:54:00 · 1977 阅读 · 0 评论 -
Python内建方法 ---- 草稿
原文地址:http://docs.python.org/library/functions.html译文: Python提供了许多内建函数。下面按函数名字母顺序一一列出并作介绍。abs(x)返回一个数的绝对值。参数可以是一个普通整数、长整数或浮点数。如果参数是复数, 则它的值被返回。如:若a=x+yi, 则abs(a)=sqrt(x^2+y^2)。all(itera翻译 2009-07-23 00:02:00 · 4488 阅读 · 0 评论 -
Python模块学习 ---- random 随机数生成
Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。 random.randomrandom.random()用于生成一个0到1的随机符点数: 0 random.uniform random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下原创 2009-06-18 11:31:00 · 33797 阅读 · 5 评论 -
Python技巧 ---- 不断更新中
1. 读取文件的内容filePath = "文件路径"(lambda f: (f.read(), f.close()))(file(filePath))[0] 2. 将内容写入到文件中(lambda f, d: (f.write(d), f.close()))(file(rd:/a.txt, w), 要写入的数据) 3. 根据正则表达式过滤文件夹中的文件原创 2009-06-20 00:49:00 · 2724 阅读 · 1 评论 -
Python模块学习 ---- struct 数据格式转换
Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本类型:字符串,整数,浮点数,元组,列表,字典。通过这六种数据类型,我们可以完成大部分工作。但当Python需要通过网络与其他的平台进行交互的时候,必须考虑到将这些数据类型与其他平台或语言之间的类型进行互相转换问题。打个比方:C++写的客户端发送一个int型(原创 2009-06-22 22:51:00 · 31510 阅读 · 5 评论 -
Python模块学习 ---- copy 对象拷贝
copy模块用于对象的拷贝操作。该模块非常简单,只提供了两个主要的方法:copy.copy与copy.deepcopy,分别表示浅复制与深复制。什么是浅复制,什么是深复制,网上有一卡车一卡车的资料,这里不作详细介绍。复制操作只对复合对象有效。用简单的例子来分别介绍这两个方法。浅复制只复制对象本身,没有复制该对象所引用的对象。#codi原创 2009-09-11 22:54:00 · 3650 阅读 · 0 评论