Python程序設(shè)計(jì)基礎(chǔ) (第3版) 課件 【ch12】 基于第三方庫的應(yīng)用舉例_第1頁
Python程序設(shè)計(jì)基礎(chǔ) (第3版) 課件 【ch12】 基于第三方庫的應(yīng)用舉例_第2頁
Python程序設(shè)計(jì)基礎(chǔ) (第3版) 課件 【ch12】 基于第三方庫的應(yīng)用舉例_第3頁
Python程序設(shè)計(jì)基礎(chǔ) (第3版) 課件 【ch12】 基于第三方庫的應(yīng)用舉例_第4頁
Python程序設(shè)計(jì)基礎(chǔ) (第3版) 課件 【ch12】 基于第三方庫的應(yīng)用舉例_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第十二章基于第三方庫的應(yīng)用舉例高等學(xué)校計(jì)算機(jī)類特別教材上海市高等學(xué)校信息技術(shù)水平考試參考教材Python程序設(shè)計(jì)基礎(chǔ)了解用openpyxl等第三方庫操作Excel文件的方法。了解用Pillow等第三方庫編輯圖像文件的方法。本章教學(xué)目標(biāo)01對Excel文件的操作PARTONE12.1

對Excel文件的操作常見的Python第三方庫有xlrd、xlwt、xluntils、pyExcelerator、openpyxl、xlsxwriter等,它們都可以跨平臺對Excel文件進(jìn)行操作,不需要在系統(tǒng)中安裝Office辦公軟件。此外,在Windows中,Python還可以利用win32com調(diào)用系統(tǒng)中已安裝的Office辦公軟件對Excel文件進(jìn)行操作。xlrd、xlwt、xuntis和pyExcelerator可處理.xls文件,網(wǎng)上資源較多,其中,前兩者分別司職讀和寫,后兩者讀和寫均可,但功能偏少。對于Office2007版以后的.xlsx文件,則只有openpyxl和xlsxwriter可以處理。其中,xlsxwriter對.xlsx文件的寫操作功能非常專業(yè),設(shè)置單元格格式、合并單元格、檢查數(shù)據(jù)有效性,以及創(chuàng)建圖表、公式、宏等操作,幾乎應(yīng)有盡有,美中不足的是沒有讀取功能。而openpyxl雖然功能不夠強(qiáng)大,但讀和寫均可,能滿足基本操作的要求。本節(jié)以openpyxl為例進(jìn)行介紹。12.1

對Excel文件的操作12.1.1

用openpyxl在內(nèi)存中創(chuàng)建工作簿在連網(wǎng)狀態(tài)下,用“C:IPython3lscripts'pip.exeinstallopenpyxl”命令即可快速安裝openpyxl。要對Excel文件進(jìn)行操作,必須明確其中工作簿、工作表對象的概念層次,習(xí)慣上分別對應(yīng)以下實(shí)例名稱:wb和ws若從新建工作簿開始,可先在內(nèi)存中創(chuàng)建工作簿(虛擬的Excel文件),例如:此時(shí)wb為內(nèi)存中的工作簿實(shí)例,并有一個(gè)名為Sheet的空工作表。要將磁盤中已有的Excel工作簿文件裝入內(nèi)存中,可用:由于操作是在內(nèi)存中完成的,并沒有寫入文件,看不到文件中的變化,且此時(shí)Excel文件并未被獨(dú)占,仍可以被其他程序打開。直到調(diào)用wb.save(filename=<xlsx文件路徑及名稱>)才最終寫入文件。用工作簿實(shí)例的active屬性可將當(dāng)前工作表指定為活動工作表,例如:12.1.1

用openpyxl在內(nèi)存中創(chuàng)建工作簿可在工作簿中創(chuàng)建新的工作表實(shí)例,并直接將其指定為活動工作表,例如:或直接定義工作表實(shí)例:對于已有的工作簿實(shí)例可定義要操作的工作表實(shí)例,例如:12.1.1

用openpyxl在內(nèi)存中創(chuàng)建工作簿12.1.2數(shù)據(jù)的讀取使用openpyxl可以直接訪問活動工作表中的單元格,例如:cell_A4=ws['A4']這里,cell_A4實(shí)例的類型是單元格,其值為cell_A4.value。也可以直接以行、定位方式訪問單元格,讀取其中的數(shù)據(jù)或進(jìn)行賦值,例如:cell_B4=ws.cell(row=4,column=2,value='上海市')注意,Excel中的行和列參數(shù)row和column都是從1開始的,與Python中其他對象從0開始的指針下標(biāo)習(xí)慣不一致。如果需要遍歷整個(gè)工作表中有數(shù)據(jù)的所有單元格,可以調(diào)用openpyxl.worksheetWorksheetrows()方法,將其用tuple()方法轉(zhuǎn)換為元組類型,即可得到以每行元組為元素的二維元組,如果是空工作表則返回空元組。例如,對于單元格A1:C9中包含有效數(shù)據(jù)的工作表ws:12.1.2數(shù)據(jù)的讀取同樣,調(diào)用openpyxl.worksheet.Workshect.columns()方法,將其用tuple()方法轉(zhuǎn)換為元組類型,即可得到以每列元組為元素的二維元組。例如,上表可以改為:12.1.2數(shù)據(jù)的讀取如果需要讀取工作表中的部分?jǐn)?shù)據(jù),則可以使用單元格區(qū)間、列區(qū)間和行區(qū)間,例如:openpyxl并沒有提供獲取有效行數(shù)和列數(shù)的方法,但可以用len()方法獲取。有效行數(shù)為len(uple(ws.rows)),有效列數(shù)為len(tuple(ws.columns))。12.1.2數(shù)據(jù)的讀取12.1.3

編輯和保存Excel中的單元格除可以賦值為字符串、整數(shù)和浮點(diǎn)數(shù)外,還可以接收日期、百分?jǐn)?shù)、公式等賦值,例如:若數(shù)據(jù)以每行元組(或列表)為元素的二維元組(或列表)的形式存在,則可利用循環(huán)語句將數(shù)據(jù)寫入活動工作表中。例如,對于以每行數(shù)據(jù)列表為元素的二維列表rows,用下列循環(huán)語句寫入工作表中:1賦值工作表對象的merge_cells()和unmerge_cells()方法可使用單元格名稱字符串或起止行、列作為參數(shù),例如:2合并與拆分單元格12.1.3

編輯和保存導(dǎo)入openpyxl.styles,可利用Font()(字體)、Color()(顏色)、Border()(加粗)、Side()(邊緣)、PattemFil()(填充)、Alignment()(排列)、Protection()(鎖定)等方法設(shè)定單元格的格式化屬性。例如:3單元格格式化12.1.3

編輯和保存導(dǎo)入openpyxlchart可創(chuàng)建二維或三維圖表。以直方圖為例,用chart=BarChart()實(shí)例化直方圖對象,用Reference()方法實(shí)例化圖表數(shù)據(jù)對象和坐標(biāo)軸數(shù)據(jù)對象,用chart.add_data()方法繪圖,其范圍選擇符合Excel中的語法習(xí)慣,用chart.set_categories()方法添加坐標(biāo)數(shù)據(jù),最后用chart.add_chart()方法將圖表插入活動工作表的指定起始單元格中。4圖表12.1.3

編輯和保存【例12-1】編寫程序,將實(shí)驗(yàn)數(shù)據(jù)和直方圖寫入文件test_barcart.xlsx中,結(jié)果如圖12-1所示。12.1.3

編輯和保存最后,調(diào)用wb.save(<xlsx文件路徑及名稱>)可覆蓋性寫入文件。由于Excel文件的獨(dú)占性,只能對未同時(shí)被其他程序打開的.xlsx文件寫入。用openpyxl還可實(shí)現(xiàn)條件格式、數(shù)據(jù)有效性規(guī)則驗(yàn)證,以及進(jìn)一步調(diào)用pandas和numpy庫進(jìn)行數(shù)據(jù)分析,限于篇幅,不再一一贅述。讀者可參照相關(guān)網(wǎng)站。5保存12.1.3

編輯和保存【例12-2】打開文件C:/pyxl/test.xlsx,對Sheetl表的D列中相同內(nèi)容的相鄰行進(jìn)行合并單元格操作。12.1.3

編輯和保存02圖像操作PARTTWO12.2

圖像操作PIL(PythonImagingLibrary)是著名的圖像處理第三方庫,包含基本的圖像處理、特效合成、濾鏡等方法。Pillow庫是PIL在Python3中的替代版本。在連網(wǎng)狀態(tài)下,用“C:Python31scripts'pip.exeinstallpillow”命令即可快速安裝Pillow庫。Pillow庫中除核心模塊Image外,還包含ImageChops(圖像計(jì)算)、ImageEnhance(圖像效果)、ImageFilter(濾鏡)、ImageDraw(繪圖)等主要模塊。12.2.1Image模塊及其應(yīng)用Image模塊中常用的函數(shù)說明如下。(1)圖像打開函數(shù)

open(file,openmode)其中,file和openmode分別為文件名和打開方式(默認(rèn)為'r,只讀)。(2)新建圖像函數(shù)

new(mode,size,color=0)其中,mode為圖像色彩模式,取值為RGB'、'CMYK'、'LAB'等;size為圖像大小,是由水平像素?cái)?shù)與垂直像素?cái)?shù)組成的元組;color為顏色,默認(rèn)為黑色(0)。(3)復(fù)制圖像函數(shù)

copy()其功能是將圖像對象復(fù)制到內(nèi)存中。(4)粘貼圖像函數(shù)

paste(region,size)其功能是將內(nèi)存中的圖像粘貼到對象region中。其中,region為粘貼對象,size為圖像大小。(5)顯示圖像函數(shù)show()其功能是顯示內(nèi)存中的圖像。(6)重新設(shè)置大小函數(shù)resize(size)其中,size為圖像大小,是由水平像素?cái)?shù)與垂直像素?cái)?shù)組成的元組。12.2.1Image模塊及其應(yīng)用(7)圖像旋轉(zhuǎn)函數(shù)

rotate(angle)其中,angle為旋轉(zhuǎn)角度。(8)圖像變換函數(shù)

transpose(method)其中,method可選項(xiàng)有FLIP_LEFT_RIGHT(左右鏡像)、FLIP_TOP_BOTTOM(上下鏡像)、ROTATE_90(順時(shí)針90°)、ROTATE_180(順時(shí)針180°)、ROTATE_270(逆時(shí)針90°)等。(9)圖像裁剪函數(shù)crop((x1,yl,x2,y2))其中,各參數(shù)為自左上角點(diǎn)至右下角點(diǎn)的坐標(biāo)元組。(10)縮略圖函數(shù)thumbnail(size)其中,size為縮略圖大小。12.2.1Image模塊及其應(yīng)用(11)轉(zhuǎn)換函數(shù)

convert(mode)其功能是轉(zhuǎn)換圖像色彩模式。其中,mode可取值為'RGB'、'CMYK'、'LAB'等。(12)混合圖像函數(shù)

blend(iml,im2,alpha)其中,iml、im2相當(dāng)于Photoshop中參加混合的上、下兩層中的圖像;alpha為混合透明度,通過iml*(1-alpha)+im2*alpha得到混合結(jié)果。(13)遮罩圖像函數(shù)composite(iml,im2,mask)其中,iml相當(dāng)于Photoshop中綁定遮罩層中的圖像;im2相當(dāng)于下層圖像(被遮罩);mask為遮罩層圖像,要求為黑白二值、灰度或RGBA色彩模式。(14)保存圖像函數(shù)save(file,format)其功能是將內(nèi)存中的圖像寫入文件中。12.2.1Image模塊及其應(yīng)用【例12-3】在C:\test文件夾中保存有同樣大小的兩幅圖像1.jpg和2.jpg,用灰度圖3.jpg作為遮罩,編寫程序,將1.jpg和2.jpg混合并呈現(xiàn)出來,效果如圖12-2所示。代碼如下:12.2.1Image模塊及其應(yīng)用12.2.1Image模塊及其應(yīng)用ImageChops模塊包含一些通過計(jì)算圖像通道中的像素值而進(jìn)行特效合成的函數(shù),相當(dāng)于Photoshop中的圖層特效。常見的特效函數(shù)說明如下。12.2.1Image模塊及其應(yīng)用12.2.2ImageChops特效與合成(1)正片疊底函數(shù)類似于在同一個(gè)光源下疊放兩張膠片的投影結(jié)果,高亮度視為透明。代碼如下:正片疊底效果如圖12-3所示。12.2.2ImageChops特效與合成(2)濾色函數(shù)類似于兩張膠片分別透過不同的光源在同一個(gè)屏幕上的投影結(jié)果,低亮度視為透明。代碼如下:12.2.2ImageChops特效與合成濾色效果如圖12-4所示。12.2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論