[python语法语义] 开帖学习笔记:记录学习python的各种应用,以免以后忘了。
zhougaomin_007
2007-11-29
下面的例子都是在windows下完成的。
1,读取文本文件的每行(假定C:根目录下有一个test.txt文件)。 f = open("c:/test.txt") while(True): str = f.readline() if str == "" : break #TODO:your code here print str f.close() 2,使用glob模块进行查询指定的excel文件,并使用第三方模块xlrd(需要安装下载http://beauty.run-to.com/TechDocs/Product/xlrd-0.5.2.tgz,先解压,安装时,使用命令行到xlrd解压目录内,使用命令setup.py install进行安装。以下同)解析excel文档。(注:py文件中要是有汉字,比如注释或字符串,那么在文件的头部加上#-*- encoding:utf-8 -*-标志,就可以识别中文集了。不过需要注意的是,使用notepad在英文系统下保存时默认是ansi,所以应该使用notepad的另存为,然后encoding选择utf-8而不是ansi,然后类型选择所有类型,保存成py文件,否则就算加了标志,显示的还是乱码,下同)。 #-*- encoding:utf-8 -*- import xlrd import types import time import os import glob def Calc(excelname) : #open excel book = xlrd.open_workbook(excelname) #read first sheet sh = book.sheet_by_index(0) #read data from excel at first column print excelname + ":" for rx in range(sh.nrows) : d = sh.cell_value(rowx=rx, colx=0) print d if __name__ == "__main__" : ######### #xl*.xls匹配excel文件,并且该文件的文件名头两个字为xl for excelname in glob.glob( 'xl*.xls' ) : Calc(excelname) 3,xml的解析。 #!/usr/bin/python #-*- encoding:utf-8 -*- from xml.sax import make_parser from xml.sax import ContentHandler import string class MyHandler(ContentHandler): def startElement(self,name,attrs): #遇到元素开头时执行,如<para> self.name = name self.content = "" def endElement(self,name): #遇到元素尾时执行,如</para> print self.name + "=" + self.content def characters(self,content): #获取元素内容 self.content = content ch = MyHandler() #生成ContentHandler的实例 saxparser = make_parser() #创建sax处理器 saxparser.setContentHandler(ch) #关联 saxparser.parse('test.xml') 4,获取某个网站的网页内容(你可以通过这个例子写出抓取网络信息的程序)。 以下是到sina网站上获取当天的浦发银行的股票信息的代码。 import urllib pg = urllib.urlopen('http://hq.sinajs.cn/list=sh600000') cont = pg.read() print cont 5,正则表达式的使用。 import re p = re.compile('[a-z]+\d{3}') str = "fasfnnhzc123aff;^%^Fsdfg sd" m = p.match(str) print m.group() 6,RPC远程过程调用的例子(分为服务端和客户端代码)。 这是服务端代码: server.py: import SimpleXMLRPCServer #定义自己的CMS类 class MyCMS: def getVersion(self):#向外公开版本的方法 return "Powerd By Python 0.1a" cms = MyCMS() server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888)) server.register_instance(cms) print "Listening on port 8888" server.serve_forever()#服务器执行,并监听8888端口 这是客户端代码: client.py: import xmlrpclib server = xmlrpclib.ServerProxy("http://localhost:8888") version = server.getVersion() print "version:"+version |
|
zhougaomin_007
2007-11-29
咦,缩进怎么没有了??
大家注意,有些地方需要缩进! |
|
zhougaomin_007
2007-11-29
创建文件夹以及判断文件是否存在:
import os #创建test目录,注意不可嵌套创建,也就是要是C:/test目录 #不存在则不能创建子目录c:/test/test。 os.mkdir('c:/test') dirFlag = os.path.exists('c:/test') fileFlag = os.path.exists('c:/test/test.txt') |
|
zhougaomin_007
2007-11-29
使用PIL图像处理模块:
import Image, ImageDraw, ImageFont import ImageFilter import ImageEnhance from math import atan, degrees #显示jpg(假定当前目录存在一个叫做Blue hills.jpg的图片) im = Image.open("Blue hills.jpg") im.show() #缩小一半 nim = im.resize((im.size[0] / 2,im.size[1] / 2) ,Image.BILINEAR) #如果要保存的话,下面注释打开即可 #nim.save("Blue hills Resize 2.jpg") nim.show() #旋转45度 nim2 = nim.rotate( 45, Image.BILINEAR ) #nim2.save( "Blue hills rotated.jpg" ) nim2.show() #滤镜 nim3 = im for i in range(2): nim3 = nim3.filter( ImageFilter.BLUR ) nim3.show() #加logo text = "Hello Logo!" img = im FONT = "c:/windows/fonts/verdana.ttf" watermark = Image.new("RGBA", (im.size[0], im.size[1])) draw = ImageDraw.ImageDraw(watermark, "RGBA") size = 0 while True: size += 1 nextfont = ImageFont.truetype(FONT, size) nexttextwidth, nexttextheight = nextfont.getsize(text) if nexttextwidth+nexttextheight/3 > watermark.size[0]: break font = nextfont textwidth, textheight = nexttextwidth, nexttextheight draw.setfont(font) draw.ink = 255 + 255*255 + 255*255*255 draw.text(((watermark.size[0]-textwidth)/2,(watermark.size[1]-textheight)/2), text) watermark = watermark.rotate(degrees(atan(float(img.size[1])/img.size[0])),Image.BICUBIC) mask = watermark.convert("L").point(lambda x: min(x, 55)) watermark.putalpha(mask) img.paste(watermark, None, watermark) img.show() 等等等等... |
|
zhougaomin_007
2007-11-29
简单使用wxpython的一个例子:
import wx class MyFrame(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, title, pos=(150, 150), size=(350, 200)) # 使用面板放置其他控件 panel = wx.Panel(self) # 加了一个标签和按钮 text = wx.StaticText(panel, -1, "Hello World!") text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD)) text.SetSize(text.GetBestSize()) btn = wx.Button(panel, -1, "Close") # 绑定按钮事件 self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, btn) #设置布局用的sizer sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(text, 0, wx.ALL, 10) sizer.Add(btn, 0, wx.ALL, 10) panel.SetSizer(sizer) panel.Layout() def OnTimeToClose(self, evt): print "See ya later!" self.Close() class MyApp(wx.App): def OnInit(self): frame = MyFrame(None, "Simple wxPython App") self.SetTopWindow(frame) frame.Show(True) return True app = MyApp(redirect=True) app.MainLoop() |
|
zhougaomin_007
2007-11-29
大家可以将自己的一些例子写在这儿,共同交流。
|
|
zhougaomin_007
2007-12-08
This is a demo c
|