[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
Global site tag (gtag.js) - Google Analytics