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分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符
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]]),#计算sub在S中出现的次数
find(sub[, start[, end]]),#返回S中出现sub的第一个字母的标号,如果S中没有sub则返回-1。
index(substr[, start[, end]]),#与find()相同,只是在S中没有substr时,会返回一个运行时错误
find()----找到的第一个符合字符的index
rfind()-----找到最后一个符合的字符的index
备注:
find()函数族找不到时返回-1,index()函数族则抛出ValueError异常。
另,也可以用in和 not in操作符来判断字符串中是否存在某个模板
6)删除列表里的元素
L= [2,3]
pop() #默认删除列表里的最后一个元素
L.pop()
[2]
delL[1] #表示删除列表L里的第二个元素
[2]
L.remove(3)#删除列表L里的某个值
[2]
- Python实用工具介绍
- Diskpart 命令行实用工具介绍
- Diskpart 命令行实用工具介绍
- Diskpart 命令行实用工具介绍
- Diskpart 命令行实用工具介绍
- Diskpart 命令行实用工具介绍
- iPhone配置实用工具介绍
- iPhone配置实用工具介绍
- ROS中实用工具介绍
- python实用工具集
- ARM 开发软件及实用工具介绍
- ARM开发软件及实用工具介绍
- ARM 开发软件及实用工具介绍
- ARM 开发软件及实用工具介绍
- ARM 开发软件及实用工具介绍
- 几个实用工具软件的介绍
- ARM开发软件及实用工具介绍
- ARM开发软件及实用工具介绍
- Java反射机制---01
- iOS开发之AVPlayer的精彩使用--->网易新闻视频播放界面的另类实现
- Linux安装包格式和安装方法研究
- mysql slave不能同步Last_SQL_Error: Error ‘Duplicate entry ‘
- 了解Android中的Preference结构的设计与实现
- Python实用工具介绍
- 页面的下拉加载效果基于ajax加载数据
- AC自动机(hdu 2896 hdu 3065)
- ubuntu14.04下载blender
- 中国科学院朱清时:量子意识(人人能懂版)
- 业务知识(2)立案与受理的区别&&裁定书和判决书的区别
- 如何正确使用html基本标签
- 蓝鸥Unity开发基础——静态类
- SpringMVC中用@ParamVariable传递的参数包含斜杠(/)时,匹配不了报404错误的解决方案