python應用案例

經常使用包:圖片處理(PIL或Pillow)、網頁解析(goose)、工具包下載安裝(easy_install、pip)、數據庫(MySQLdb)、Web開發(Django)、機器學習(numpy、pandas、scipy)、遊戲開發(PyGame)、文件操做(os)html

相關連接:http://blog.csdn.net/Gamer_gyt/article/details/46279915python

      http://www.cnblogs.com/txw1958/p/python-tutorial-list.htmlgit

              http://www.lfd.uci.edu/~gohlke/pythonlibs/#libxml-python正則表達式

(一)批量處理圖片   PIL(Image、ImageDraw、ImageFont)、os、time(時間戳)數據庫

import os,time from PIL import Image,ImageDraw,ImageFont #源文件夾,目標文件夾,字體文件,屏幕分辨率(寬度,高度)
srcpath, destpath, fontfile = r".\src", r"..\dest", r"..\font\301-CAI978.ttf"
width, height = 640.0, 1136.0
def zoomSize(filename,imgtype):
    imgtype = "jpeg" if imgtype=="jpg" else "png"
    #獲取文件建立時間        例:1483882912.37 Sun Jan 08 21:41:52 2017
    t= time.ctime(os.path.getctime(filename)) print filename +" 建立時間:"+ t
    im = Image.open(filename)   #默認mode="r"
    #在圖片上添加建立時間
    draw = ImageDraw.Draw(im)
    fontsize = min(im.size)/30
    font = ImageFont.truetype(fontfile, fontsize)
    draw.text((0,im.height - fontsize),t,font=font,fill=(255,0,0)) #按比例縮放,使之適應屏幕分辨率
    rate = max( im.width/width, im.height/height )
    if rate!=0:
        im.thumbnail((im.size[0]/rate , im.size[1]/rate))    #注:此處有兩個括號,thumbnail的處理對象是元組
    return im
    
def batchZoomSize():
    imgBatch = {}    #字典  {文件名:對應的處理後Image對象} #切換至源文件目錄,對每張圖片進行處理
 os.chdir(srcpath) for filename in os.listdir(os.getcwdu()):    #列舉當前目錄下的全部文件
        postfix = os.path.splitext(filename)[1]  #獲取元祖 (文件名,文件後綴) if postfix == ".jpg" or postfix == ".png":
            imgBatch[filename]=zoomSize(filename, postfix)
    #切換至目標文件目錄,保存圖片至目標文件夾,關閉圖片文件
 os.chdir(destpath) for filename in imgBatch.keys():
        imgBatch[filename].save(filename)
        imgBatch[filename].close()

(二)生成序列號  random(隨機數)、string(字符串)dom

import string,random
field = string.letters + string.digits    #'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

def getRandom(size):
    return "".join(random.sample(field,size))

def generate(n,group,size):
    for i in range(n):
    "-".join([getRandom(size) for i in range(group)])  #注意:()裏面還有[],join的處理對象時列表 if __name__=="__main__":
    print generate(2,4,4)            #['YcwC-fzE4-93pl-ROnY', '76AI-h1Aa-BNK4-PuFR']

(三)統計單詞詞頻  os、re(正則表達式)、collections.Counter(統計計數)機器學習

import os,re from collections import Counter''' 獲取某一文件中的英文單詞詞頻 例:Counter({word1:num1,word2:num2}) '''
def getCount(filename):
    pattern = r'''[A-Za-z]+|\$?\d+%?$'''
    with open(filename) as f:
        r = re.findall(pattern,f.read()) return Counter(r) ''' 將結果保存到文件中 '''
def saveFile(filename,counter):
    fp = open(filename,"w")for t in counter:
        fp.write(bytes(t[0]) + "," + bytes(t[1])+"\n")    # 單詞,詞頻
    fp.close()

count = getCount(r".\doc\1.txt")
saveFile("count.csv",count.most_common())
相關文章
相關標籤/搜索