Python实用工具介绍

来源:互联网 发布:阿里java工资水平 编辑:程序博客网 时间:2024/05/17 06:33

1. Socket通信

server:

 

#coding:utf-8from socket import *from time import ctime host = ''  #绑定的ipport = 21567 #绑定的端口addr = (host,port) #套接字与连接协议,这里是tcp,socket.SOCK_DGRAM是udp.tcpSerSock = socket(AF_INET,SOCK_STREAM)tcpSerSock.bind(addr)tcpSerSock.listen(5) while True:        print'waiting for connetion....'     #等待接收客户端请求,返回新的套接字与IP地址       connection,addr = tcpSerSock.accept()        print'...connetion from :',addr         whileTrue:           #               data = connection.recv(1024)               if not data:                       break               s = 'say'               t = ctime()               #print addr,s,data               #sdata =  'servicer say on'               print addr,t,s,data               sdata = raw_input('> ')               cdata = 'sorry,I am so busy'               if sdata:#                      connection.send(sdata)                       connection.send('[%s] %s'% (ctime(),sdata))               else:                       connection.send('[%s] %s'% (ctime(),cdata))

 

client:

from socket import * host = '127.0.0.1' #server addport = 21567BUFSIZ = 1024addr = (host,port) tcpCliSock = socket(AF_INET,SOCK_STREAM)tcpCliSock.connect(addr) while True:    data =raw_input('> ')    if not data:        break   tcpCliSock.send(data)    data =tcpCliSock.recv(BUFSIZ)    if not data:        break     print data tcpCliSock.close()


另 socket模块的其他用法: 

import socket

#获得主机名

socket.gethost()

#解析域名的ip地址

socet.gethostbyname(‘www.baidu.com’)

 

 

2. PIL库使用

import Image# 打开一个jpg图像文件,注意路径要改成你自己的:im = Image.open('/Users/iphone/Pictures/qiao.jpg')# 获得图像尺寸:w, h = im.size# 缩放到50%:im.thumbnail((w//2, h//2))# 把缩放后的图像用jpeg格式保存:im.save('/Users/iphone/Pictures/qiao1.jpg','jpeg')其他功能如切片、旋转、滤镜、输出文字、调色板等一应俱全。比如,模糊效果也只需几行代码:import Image, ImageFilterim = Image.open('/Users/iphone/Pictures/qiao.jpg')im2 = im.filter(ImageFilter.BLUR)im2.save('/Users/iphone/Pictures/qiao2.jpg','jpeg')

示例是一个生成图片验证码的程序:

 

#encoding=utf-8import Image, ImageDraw, ImageFont, ImageFilterimport random # 随机字母:def rndChar():    returnchr(random.randint(65, 90)) # 随机颜色1:def rndColor():    return(random.randint(64, 255), random.randint(64, 255), random.randint(64, 255)) # 随机颜色2:def rndColor2():    return(random.randint(32, 127), random.randint(32, 127), random.randint(32, 127)) # 240 x 60:width = 60 * 4height = 60image = Image.new('RGB', (width, height), (255, 255,255))# 创建Font对象:font = ImageFont.truetype('/Library/Fonts/Arial.ttf',36)# 创建Draw对象:draw = ImageDraw.Draw(image)# 填充每个像素:for x in range(width):    for y inrange(height):       draw.point((x, y), fill=rndColor())# 输出文字:for t in range(4):   draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())# 模糊:image = image.filter(ImageFilter.BLUR)image.save('code.jpg', 'jpeg');image.show('code.jpg')


3. python 命令行程序调试工具,取代传统的print打印,使用模块pdb.

用pdb调试有多种方式可选:

 

1)  命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前

python -m pdb code.py(程序名)

 

2)  比较常用的,就是在程序中间插入一段程序,相对于在一般IDE里面打上断点然后启动debug,不过这种方式是hardcode的

 

for x in range(width):

    for y inrange(height):

        importpdb

       pdb.set_trace()

        x =str(x) + y

       draw.point((x, y), fill=rndColor())

 

然后正常运行脚本,到了pdb.set_trace()那就会定下来,就可以看到调试的提示符(Pdb)了。

 

参数介绍:

 

1)b(reak), 设置断点,例如 “b 77″,就是在当前脚本的77行打上断点,还能输入函数名作为参数,断点就打到具体的函数入口,如果只敲b,会显示现有的全部断点

 

2)condition bpnumber [condition],设置条件断点,下面语句就是对第4个断点加上条件“a==3”

(Pdb) condition 4 a==3

 

3)cl(ear),如果后面带有参数,就是清除指定的断点;如果不带参数就是清除所有的断点

(Pdb) b

Num Type        Disp Enb   Where

4  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:11

5  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:15

(Pdb) cl 4

Deleted breakpoint 4

(Pdb) b

Num Type        Disp Enb   Where

5  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:15

 

4)disable/enable,禁用/激活断点

(Pdb) disable 15

No breakpoint numbered 15

(Pdb) disable 5

(Pdb) b

Num Type        Disp Enb   Where

5   breakpoint   keep no   at /Users/iphone/git/yys-test/code.py:15

6  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:7

7  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:11

 

5)其他一些指令参数

n(ext),让程序运行下一行,如果当前语句有一个函数调用,用n是不会进入被调用的函数体中的

 

s(tep),跟n相似,但是如果当前有一个函数调用,那么s会进入被调用的函数体中

c(ont(inue)),让程序正常运行,直到遇到断点

j(ump),让程序跳转到指定的行数

 

p,最有用的命令之一,打印某个变量

 

3. 时间转化与格式化

 

 importtime,datetime

#time 转为字符串形式

 printtime.strftime("%Y-%m-%d %X", time.localtime())

#字符串转为time形式

 t =time.strptime("2016 - 08 - 08", "%Y - %m - %d")

#将整数按年,月,日,时, 分, 秒的形式转为datetime类型

 d =datetime.datetime(2016,8,29,10,10,10)

 

符:

%a 英文星期简写

%A 英文星期的完全

%b 英文月份的简写

%B 英文月份的完全

%c 显示本地日期时间

%d 日期,取1-31

%H 小时, 0-23

%I 小时, 0-12

%m 月, 01 -12

%M 分钟,1-59

%j 年中当天的天数

%w 显示今天是星期几

%W 第几周

%x 当天日期

%X 本地的当天时间

%y 年份 00-99间

%Y 年份的完整拼写

 

 

 

4. 常用的python内建函数.

1)删减

T2.lstrip()移除字符串前面字符(默认空格),返回字符串

T2.rstrip()移除字符串后面字符(默认空格),返回字符串

T2.strip()移除字符串前后面空格,返回字符串默认空格,可以其他字符 S.strip('"')

 

2)切割

split([sep[,maxsplit]]),

#sep为分隔符,把S分成一个listmaxsplit表示分割的次数。默认的分割符为空白字符

rsplit([sep[,maxsplit]])#从右到左切割

 

3)变形

lower(),#全部小写

upper(),#全部小写

capitalize(),#首字母大写

swapcase(),#大小写交换

capwords(s)#每个单词第一个大写,其他小写

 

 

 

4)连接

join(seq)

join()  #它的功用是将可迭代的字符串序列连接成一条长字符串,如:

a= {‘a’:1, ‘b’:2, ‘c’:3}

b= ‘;’.join(‘%s=%s’%(k,v) for k,v in a.items())

printb

‘a=1;b=2;c=3’

 

5)查找

count(sub[, start[, end]]),#计算subS中出现的次数 

find(sub[, start[, end]]),#返回S中出现sub的第一个字母的标号,如果S中没有sub则返回-1

index(substr[, start[, end]]),#find()相同,只是在S中没有substr时,会返回一个运行时错误

find()----找到的第一个符合字符的index

rfind()-----找到最后一个符合的字符的index

备注:

find()函数族找不到时返回-1index()函数族则抛出ValueError异常。

另,也可以用in not in操作符来判断字符串中是否存在某个模板

6)删除列表里的元素

L= [2,3]

pop()  #默认删除列表里的最后一个元素

L.pop()

[2]

delL[1] #表示删除列表L里的第二个元素

[2]

L.remove(3)#删除列表L里的某个值

[2]

0 0
原创粉丝点击