Skip to content

Category Archives: Python

Python:The bisect module

09-Jan-10

This module provides functions to insert items in sorted sequences.
insort(sequence, item) inserts item into the sequence, keeping it sorted. The sequence can be any mutable sequence object that implements __getitem__ and insert.
Example: Using the bisect module to insert items in an ordered list

# File: bisect-example-1.py
import bisect
list = [10, 20, 30]
bisect.insort(list, 25)
bisect.insort(list, 15)
print list

$ python [...]

Python time datetime模块

18-Dec-09

Time模块:
--------------------------
time() #以浮点形式返回自Linux新世纪以来经过的秒数。在linux中,00:00:00 UTC,
January 1, 1970是新**49**的开始。
>>>time.time()
>>>1150269086.6630149
>>>time.ctime(1150269086.6630149)
>>>’Wed Jun 14 15:11:26 2006′
time.ctime([sec])#把秒数转换成日期格式,如果不带参数,则显示当前的时间。
>>> import time
>>> time.ctime()
>>> ‘Wed Jun 14 15:02:50 2006′
>>> time.ctime(1138068452427683)
‘Sat Dec 14 04:51:44 1901′
>>> time.ctime(os.path.getmtime(’E:\\untitleds.bmp’))
‘Fri Sep 19 16:35:37 2008′
>>> time.gmtime(os.path.getmtime(’E:\\untitleds.bmp’))
time.struct_time(tm_year=2008, tm_mon=9, tm_mday=19, tm_hour=8, tm_min=35, tm_sec=37, tm_wday=4, tm_yday=263, tm_isdst=0)
#将一个文件的修改时间转换为日期格式(秒 转 日期)
>>> time.strftime(’%Y-%m-%d %X’,time.localtime(os.path.getmtime(’E:\\untitleds.bmp’)))
>>> ‘2008-09-19 16:35:37′
#定时3秒。
>>> time.sleep(3)
TIME模块参考:
---------------------------------
#取一个文件的修改时间

>>> os.path.getmtime(’E:\\untitleds.bmp’)
1221813337.7626641

变量
timezone 通用协调时间和本地标准时间的差值,以秒为单位。
altzone 通用协调时间和本地夏令时的差值
daylight 标志,本地时间是否反映夏令时。
tzname (标准时区名,夏令时时区名)函数
time() 以浮点数返回纪元至今以来的秒数。
clock() 以浮点数返回CPU开始这个process的时间,(或者至上次调用这个函数的时间)
sleep() 延迟一段以浮点数表示的秒数。
gmtime() 把以秒表示的时间转换为通用协调时序列
localtime() 把秒时转换为本地时序列
asctime() 将时间序列转换成文本描述
ctime() 将秒时转换成文本描述
mktime() [...]

python urllib2模块

18-Dec-09

简介:
urllib2是python的一个获取url(Uniform Resource Locators,统一资源定址器)的模块。它用urlopen函数的形式提供了一个非常简洁的接口。这使得用各种各样的协议获取url成为可能。它同时 也提供了一个稍微复杂的接口来处理常见的状况-如基本的认证,cookies,代理,等等。这些都是由叫做opener和handler的对象来处理的。
以下是获取url最简单的方式:

import urllib2
response = urllib2.urlopen(’http://python.org/’)
html = response.read()

许多urlib2的使用都是如此简单(注意我们本来也可以用一个以”ftp:””file:”等开头的url取代”HTTP”开头的url).然而,这篇教程的目的是解释关于HTTP更复杂的情形。HTTP建基于请求和回应(requests &responses )-客户端制造请求服务器返回回应。urlib2用代 表了你正在请求的HTTP request的Request对象反映了这些。用它最简单的形式,你建立了一个Request对象来明确指明你想要获取的url。调用urlopen函 数对请求的url返回一个respons对象。这个respons是一个像file的对象,这意味着你能用.read()函数操作这个respon对象:

import urllib2
req = urllib2.Request(’http://www.tinoweb.cn’)
response = urllib2.urlopen(req)
the_page = response.read()

注意urlib2利用了同样的Request接口来处理所有的url协议。例如,你可以像这样请求一个ftpRequest:

req = urllib2.Request(’ftp://example.com/’)

对于HTTP,Request对象允许你做两件额外的事:第一,你可以向服务器发送数据。第二,你可以向服务器发送额外的信息(metadata),这些信息可以是关于数据本身的,或者是关于这个请求本身的–这些信息被当作HTTP头发送。让我们依次看一下这些。
数据:
有时你想向一个URL发送数据(通常这些数据是代表一些CGI脚本或者其他的web应用)。对于HTTP,这通常叫做一个Post。当你发送一个你 在网上填的form(表单)时,这通常是你的浏览器所做的。并不是所有的Post请求都来自HTML表单,这些数据需要被以标准的方式encode,然后 作为一个数据参数传送给Request对象。Encoding是在urlib中完成的,而不是在urlib2中完成的。

import urllib
import urllib2

url = ‘http://www.someserver.com/cgi-bin/register.cgi’
values = {’name’ : ‘Michael Foord’,
‘location’ : ‘Northampton’,
‘language’ : ‘Python’ }

data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()

如果你不传送数据参数,urlib2使用了一个GET请求。一个GET请求和POST请求的不同之处在于POST请求通常具有边界效应:它们以某种 方式改变系统的状态。(例如,通过网页设置一条指令运送一英担罐装牛肉到你家。)虽然HTTP标准清楚的说明Post经常产生边界效应,而get从不产生 边界效应,但没有什么能阻止一个get请求产生边界效应,或一个Post请求没有任何边界效应。数据也能被url自己加密(Encoding)然后通过一 个get请求发送出去。
这通过以下实现:

import urllib2
import urllib

data = [...]

IPython

08-Dec-09

IPython 是一个 python 的交互式 shell,比默认的 python shell 好用得多,支持变量自动补全,自动缩近,支持 bash shell 命令,内置了许多很有用的功能和函数。在 ubuntu 下只要 sudo apt-get install ipython 就装好了,通过 ipython 启动。

下面是 ipython 中几个简单好用的 magic 函数:
In [1]: bg function
把 function 放到后台执行,例如: %bg myfunc(x, y, z=1),之后可以用jobs将其结果取回。myvar = jobs.result(5) 或 myvar = jobs[5].result。另外,jobs.status() 可以查看现有任务的状态。
In [1]:ed 或 In [1]: edit
编辑一个文件并执行,如果只编辑不执行,用 ed -x filename 即可。
In [1]: env
显示环境变量
In [1]: hist 或 [...]

Python MySQL安装及数据库开发

03-Dec-09

Python数据库操作及python-mysql安装
Python与Mysql
一、安装MySQLdb模块
使用python连接Mysql的前提,就是需要一个让python连接到Mysql的接口,这就是MySQLdb模块。
验证是否已经安装了MySQLdb:

如果上面的命令出现 “No module named MySQLdb”,表明MySQLdb尚未安装或安装的不成功!
MySQL 版本:5.1.37
下载地址:http://dev.mysql.com/downloads/mysql/5.0.html#downloads
Python 版本:2.6.4
下载地址:http://www.python.org/download/releases/2.6.4/
MySQLdb安装:
Ubuntu:

Windows:
下载地址:http://home.netimperia.com/files/misc/MySQL-python-1.2.2.win32-py2.6.exe
参见:http://sourceforge.net/forum/forum.php?thread_id=2316047&forum_id=70460
常见问题:
1.ImportError: DLL load failed: 找不到指定的模块。

D:\usr\local\Python26>python
Python 2.6 (r26:66721, Oct 2 2009, 11:35:03) [MSC v.1500 32 bit (Intel)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import MySQLdb
Traceback (most recent call last):
File “”, line 1, in
File “D:\usr\local\Python26\Lib\site-packages\MySQLdb\__init__.py”, line 19, in

import _mysql
ImportError: DLL load failed: 找不到指定的模块。
解决方法:下载libmmd.dll(附件)和libguide40.dll(附件)两个dll文件并复制System32目录之下
参见:http://sourceforge.net/forum/message.php?msg_id=5613887
2.ImportError: DLL load [...]

hash算法,python,hashlib

01-Dec-09

Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。
数学表述为:h = H(M) ,其中H( )–单向散列函数,M–任意长度明文,h–固定长度散列值。
hashlib是python专门提供hash算法的库,现在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。md5经常用来做用户密码的存储。而sha1则经常用作数字签名。下面看看代码吧:

备案/许可证编号为: 浙ICP备09097601号 | 网址专家互链 | 友情链接站