X-Intend[超级打算]
每个人都有自己的想法,哪怕仅仅一瞬间~!

[转]一些实用的Python脚本

KingFo 于 2008-08-15 00:39:56 发表  开发者
订阅: 请点击这里获取订阅地址
引用: 请点击这里获取引用通告地址 (UTF-8)
上一篇 < [转]一些实用的Python脚本 > 下一篇

数据缩进貌似已经被机器忽略了。。。

  1. 下面的例子都是在windows下完成的。   
  2.  
  3. 1,读取文本文件的每行(假定C:根目录下有一个test.txt文件)。   
  4.  
  5. f = open("c:/test.txt")   
  6. while(True):   
  7. str = f.readline()   
  8. if str == "" : break   
  9. #TODO:your code here   
  10. print str   
  11. f.close()   
  12.  
  13. 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文件,否则就算加了标志,显示的还是乱码,下同)。   
  14.  
  15. #-*- encoding:utf-8 -*-   
  16. import xlrd   
  17. import types   
  18. import time   
  19. import os   
  20. import glob   
  21.  
  22. def Calc(excelname) :   
  23.  
  24. #open excel   
  25. book = xlrd.open_workbook(excelname)   
  26. #read first sheet   
  27. sh = book.sheet_by_index(0)   
  28. #read data from excel at first column   
  29. print excelname + ":"   
  30. for rx in range(sh.nrows) :   
  31. d = sh.cell_value(rowx=rx, colx=0)   
  32. print d   
  33.  
  34.  
  35. if __name__ == "__main__" :   
  36. #########   
  37. #xl*.xls匹配excel文件,并且该文件的文件名头两个字为xl   
  38. for excelname in glob.glob( 'xl*.xls' ) :   
  39. Calc(excelname)   
  40.  
  41. 3,xml的解析。   
  42.  
  43. #!/usr/bin/python   
  44. #-*- encoding:utf-8 -*-   
  45.  
  46. from xml.sax import make_parser   
  47. from xml.sax import ContentHandler   
  48. import string   
  49.  
  50. class MyHandler(ContentHandler):   
  51.  
  52. def startElement(self,name,attrs): #遇到元素开头时执行,如<para>   
  53. self.name = name   
  54. self.content = ""   
  55. def endElement(self,name): #遇到元素尾时执行,如</para>   
  56. print self.name + "=" + self.content   
  57. def characters(self,content): #获取元素内容   
  58. self.content = content   
  59. ch = MyHandler() #生成ContentHandler的实例   
  60. saxparser = make_parser() #创建sax处理器   
  61. saxparser.setContentHandler(ch) #关联   
  62. saxparser.parse('test.xml')   
  63.  
  64. 4,获取某个网站的网页内容(你可以通过这个例子写出抓取网络信息的程序)。   
  65. 以下是到sina网站上获取当天的浦发银行的股票信息的代码。   
  66.  
  67. import urllib   
  68. pg = urllib.urlopen('http://hq.sinajs.cn/list=sh600000')   
  69. cont = pg.read()   
  70. print cont   
  71.  
  72. 5,正则表达式的使用。   
  73.  
  74. import re   
  75.  
  76. p = re.compile('[a-z]+\d{3}')   
  77.  
  78. str = "fasfnnhzc123aff;^%^Fsdfg sd"   
  79.  
  80. m = p.match(str)   
  81.  
  82. print m.group()   
  83.  
  84. 6,RPC远程过程调用的例子(分为服务端和客户端代码)。   
  85.  
  86. 这是服务端代码:   
  87. server.py:   
  88.  
  89. import SimpleXMLRPCServer   
  90.  
  91. #定义自己的CMS类   
  92. class MyCMS:   
  93. def getVersion(self):#向外公开版本的方法   
  94. return "Powerd By Python 0.1a"   
  95.  
  96. cms = MyCMS()   
  97. server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost"8888))   
  98. server.register_instance(cms)   
  99.  
  100. print "Listening on port 8888"   
  101. server.serve_forever()#服务器执行,并监听8888端口   
  102.  
  103. 这是客户端代码:   
  104. client.py:   
  105.  
  106. import xmlrpclib   
  107.  
  108. server = xmlrpclib.ServerProxy("http://localhost:8888")   
  109.  
  110. version = server.getVersion()   
  111.  
  112. print "version:"+version  
  113.  

 

  1. 创建文件夹以及判断文件是否存在:  
  2. import os  
  3.  
  4. #创建test目录,注意不可嵌套创建,也就是要是C:/test目录  
  5. #不存在则不能创建子目录c:/test/test。  
  6. os.mkdir('c:/test')  
  7.  
  8. dirFlag = os.path.exists('c:/test')  
  9.  
  10. fileFlag = os.path.exists('c:/test/test.txt')  

 

  1. 使用PIL图像处理模块:  
  2. import Image, ImageDraw, ImageFont  
  3. import ImageFilter  
  4. import ImageEnhance  
  5. from math import atan, degrees  
  6.  
  7. #显示jpg(假定当前目录存在一个叫做Blue hills.jpg的图片)  
  8. im = Image.open("Blue hills.jpg")  
  9. im.show()  
  10.  
  11. #缩小一半  
  12. nim = im.resize((im.size[0] / 2,im.size[1] / 2) ,Image.BILINEAR)  
  13. #如果要保存的话,下面注释打开即可  
  14. #nim.save("Blue hills Resize 2.jpg")  
  15. nim.show()  
  16.  
  17. #旋转45度  
  18. nim2 = nim.rotate( 45, Image.BILINEAR )  
  19. #nim2.save( "Blue hills rotated.jpg" )  
  20. nim2.show()  
  21.  
  22. #滤镜  
  23. nim3 = im  
  24. for i in range(2): nim3 = nim3.filter( ImageFilter.BLUR )  
  25. nim3.show()  
  26.  
  27. #加logo  
  28.  
  29. text = "Hello Logo!" 
  30.  
  31. img = im  
  32. FONT = "c:/windows/fonts/verdana.ttf" 
  33. watermark = Image.new("RGBA", (im.size[0], im.size[1]))  
  34. draw = ImageDraw.ImageDraw(watermark, "RGBA")  
  35. size = 0 
  36. while True:  
  37. size += 1 
  38. nextfont = ImageFont.truetype(FONT, size)  
  39. nexttextwidth, nexttextheight = nextfont.getsize(text)  
  40. if nexttextwidth+nexttextheight/3 > watermark.size[0]:  
  41. break 
  42. font = nextfont  
  43. textwidth, textheight = nexttextwidth, nexttextheight  
  44.  
  45. draw.setfont(font)  
  46. draw.ink = 255 + 255*255 + 255*255*255 
  47. draw.text(((watermark.size[0]-textwidth)/2,(watermark.size[1]-textheight)/2), text)  
  48. watermark = watermark.rotate(degrees(atan(float(img.size[1])/img.size[0])),Image.BICUBIC)  
  49. mask = watermark.convert("L").point(lambda x: min(x, 55))  
  50. watermark.putalpha(mask)  
  51. img.paste(watermark, None, watermark)  
  52. img.show()  

 

  1. 简单使用wxpython的一个例子:  
  2.  
  3. import wx  
  4.  
  5. class MyFrame(wx.Frame):  
  6.  
  7. def __init__(self, parent, title):  
  8. wx.Frame.__init__(self, parent, -1, title,  
  9. pos=(150150), size=(350200))  
  10.  
  11.  
  12.  
  13. # 使用面板放置其他控件  
  14. panel = wx.Panel(self)  
  15.  
  16. # 加了一个标签和按钮  
  17. text = wx.StaticText(panel, -1"Hello World!")  
  18. text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))  
  19. text.SetSize(text.GetBestSize())  
  20.  
  21. btn = wx.Button(panel, -1"Close")  
  22.  
  23. # 绑定按钮事件  
  24. self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, btn)  
  25.  
  26. #设置布局用的sizer  
  27. sizer = wx.BoxSizer(wx.VERTICAL)  
  28. sizer.Add(text, 0, wx.ALL, 10)  
  29. sizer.Add(btn, 0, wx.ALL, 10)  
  30.  
  31. panel.SetSizer(sizer)  
  32. panel.Layout()  
  33.  
  34. def OnTimeToClose(self, evt):  
  35. print "See ya later!" 
  36. self.Close()  
  37.  
  38.  
  39. class MyApp(wx.App):  
  40. def OnInit(self):  
  41. frame = MyFrame(None"Simple wxPython App")  
  42. self.SetTopWindow(frame)  
  43.  
  44. frame.Show(True)  
  45. return True 
  46.  
  47. app = MyApp(redirect=True)  
  48. app.MainLoop()  

 

被阅 332 次, 0投一票
    1 / 0 / 0 | « 1 » |
    1 / 0 / 0 | « 1 » |
  • 看完了要说点啥么?
  • 昵称 (不填说不了话)
  • 信箱地址 (不会被公开,但是不填也说不了话)
  • 网址 (这个不填也成)

Google 网上论坛
订阅 XIntend
电子邮件:
访问此论坛

文章分类

站点统计

  • 文章总数: 87 篇
  • 评论总数: 6 条
  • 附件总数: 53 个
  • 留言总数: 0 份
  • 建站日期: 2008-1-1
  • 访问总数: 96499 人次

最新留言

赞助商

友情链接

Design by Free CSS Templates & TiSkin, Powered by Roclog v3.2.13

滇ICP备05000389号, Copyright © 2007 X-Intend[超级打算]. All rights reserved.