Python程序設計第6章文件課件_第1頁
Python程序設計第6章文件課件_第2頁
Python程序設計第6章文件課件_第3頁
Python程序設計第6章文件課件_第4頁
Python程序設計第6章文件課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Python程序設計第1頁,共44頁。6文件操作第章第2頁,共44頁。 Python作為服務器語言,跟數據庫交互的操作比較多,但是一般性操作或者信息的甄選需要用到各種文件,因此文件操作對于Python語言也非常重要。為了讓編程人員進一步能夠接觸更多的領域:文件。那么什么是文件呢?文件是計算機中由操作系統(tǒng)管理的具有名字的存儲區(qū)域。本章主要介紹了python文件和目錄的操作方法,簡明總結了文件和目錄操作中常用的模塊、函數,讓程序員在編寫程序調用期間存儲數據,并且可以處理來自其他程序的數據。前言第3頁,共44頁。本章內容6.1 打開和關閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操

2、作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結第4頁,共44頁。6.1.1打開文件open函數語法如下: 語法:file_object = open(fiel_name, access_mode=r, buffering=-1)。File_name是要打開的文件名字的字符串access_mode可選參數,表示文件打開的模式,r,w,a 分別代表讀取,寫入和追加??蛇x參數buffering用于指示訪問文件所采用的緩沖方式第5頁,共44頁。6.1.1打開文件假設有一個文件名為example.txt的文本文件(可能是用文本

3、編輯器創(chuàng)建的),其存儲路徑是 D:example目錄下,可以通過如下方式打開此文件。file=open(D:exampleexample.txt,r)Traceback (most recent all last)File , line 1. in ?IOError: Rrrno 2 No such file or directory:D: exampleexample.txt第6頁,共44頁。6.1.2關閉文件Python語言關閉文件通過調用close()方法關閉文件,調用close()方法將會終止對外部文件的鏈接。當文件對象被收回時,這個對象的內存空間也會自動被收回。代碼如下所示:#!/u

4、sr/bin/pythonfileHandle = open ( test.txt, a )fileHandle.write ( nnBottom line. )fileHandle.close()第7頁,共44頁。本章內容6.1 打開和關閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結第8頁,共44頁。6.2.1讀取文件讀取文件主要有三種方式,方式如下:read()函數:用來直接讀取指定Size的內容到字符串中,缺省參數為全部內容,可以指定讀取數目,默認

5、是文件將被讀取直至末尾,返回一個String類型對象。readline()函數:讀取打開文件的一行,包括行結束符,也可選size參數,默認為-1,代表直至讀到行結束符。每執(zhí)行一次會自動獲取往下一行的內容,返回一個字符串。當讀取到最后一行再執(zhí)行此函數時,會返回一個空字符串,不會報錯。readlines()函數:獲取文件所有的內容,并返回一個以每行內容作為一個String元素的List類型對象,本質是通過循環(huán)調用readline()實現的。有一個可選參數sizhint代表返回的最大字節(jié)大小。第9頁,共44頁。6.2.2寫入文件寫入文件write方法和讀取文件read方法功能相反,它把含有文本數據或

6、二進制數據塊的字符寫到文件中去,將傳遞的String參數寫入并覆蓋文件內容,返回None。需要執(zhí)行close()或flush()后才會將內存的數據寫入到文件中。當在沒有調用close()函數之前,可以調用多次write()函數來實現追加效果,即后來的write()函數的寫入的內容并不會覆蓋前一次使用write()函數寫入的內容,但是不會自動添加換行符。第10頁,共44頁。本章內容6.1 打開和關閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結第11頁,共4

7、4頁。6.3.1獲取當前文件指針tell方法獲取當前指針位置(相對文件起始處),獲取當前文件指針代碼見【例6-3】所示。【例6-4】采用tell方法獲取當前指針位置,并打印輸出。#!/usr/bin/pythonpwd = open(demo.txt,w+)positon=pwd.tell()print(positon)#位置應該是0pwd.close()第12頁,共44頁。6.3.2截斷文件truncate函數用于截斷文件,默認從文件指針指向的位置開始截斷文件內容,也可以通過傳遞int參數n來指定截斷的起始位置,n為null的時候,即truncate()表示從當前位置(文件指針位置)起截斷,

8、后面字符都刪除。截斷文件代碼如【例6-5】所示。【例6-5】采用truncate方法截斷文件,并打印輸出。#!/usr/bin/pythonpwd = open(demo.txt,r+)positon=pwd.tell()print(positon) #位置應該是0pwd.truncate(5) #從第五個位置開始截斷,后面全部擦除。print(pwd.tell()pwd.close()第13頁,共44頁。6.3.3轉移文件指針seek函數可以接收偏移量和選項作為參數,返回None。格式:seek(offset, where)有三個模式。 1)當whenc=0時,將文件指針從文件頭部轉移到”偏

9、移量”指定的字符處。2)當whence=1時,將文件指針從文件的當前位置往后轉移”偏移量”指定的字符數。3)當whence=2時,將文件指針從文件尾部向前移動”偏移量”指定的字符數。第14頁,共44頁。本章內容6.1 打開和關閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結第15頁,共44頁。6.4.1文件訪問模式序號模式描述1r只讀文件2rb二進制讀文件3r+可讀可寫,不會創(chuàng)建不存在的文件 從頭部開始寫,會覆蓋之前此位置的內容4rb+二進制格式讀寫文件。

10、文件指針將會放在文件的開頭5w只寫文件,如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件6wb二進制寫文件7w+讀寫文件。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件8wb+二進制讀寫文件。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件9a只追寫文件。從文件底部添加內容 不存在則創(chuàng)建10ab二進制追寫文件。從文件頂部讀取內容 從文件底部添加內容 不存在則創(chuàng)建11a+追讀寫文件。從文件頂部讀取內容 從文件底部添加內容 不存在則創(chuàng)建12ab+追讀寫二進制。從文件頂部讀取內容 從文件底部添加內容 不存在則創(chuàng)建第16頁,共44頁。6.4.2文件對象屬性序號屬性描述1fil

11、e.closedTrue表示文件已經關閉,否則為False2file.encoding文件所用的編碼3file.mode文件打開時的訪問模式4文件名5file.newlines文件文件f中的換行字符串的類型第17頁,共44頁。6.4.3文件的常用方法序號常用方法描述1f.close()關閉文件對象f,并將屬性f.closed設置為True2f.fileno()返回底層文件的文件描述符3f.flush()清空文件對象f,并將緩存中的內容寫入磁盤(如果有)4f.isatty()如果文件對象與控制臺關聯,就返回True5f.peek(n)返回n個字節(jié),而不移動文件指針的位置6f.r

12、ead(count)從文件對象f中讀取至多count個字節(jié),如果沒有指定count,就讀 取從當前文件指針直至最后的每個字節(jié)。以二進制模式讀時,返回bytes對象;以文本模式讀時,返回str對象。如果沒有要讀的內容(已到文件結尾),就返回一個空的bytes或str對象7f.readline(count)讀取下一行(如果指定count,并且在n字符前滿足這一數值,那么至多讀入count個字節(jié)),包括n8f.readlines(sizehint)讀入到文件結尾之前的所有行,并以列表形式返回。如果給定sizehint,那么至多讀入大概sizehint個字節(jié)(如果底層文件對象支持第18頁,共44頁。本

13、章內容6.1 打開和關閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結第19頁,共44頁。6.5.1讀取CSV文件方式1:使用reader()函數來讀取csv文件,返回一個reader對象。reader對象可以使用迭代獲取其中的每一行,csv.reader(csvfile, dialect=excel, *fmtparams)方式2:使用DicReader()按照字典的方式讀取csv內容,class csv.DictReader(csvfile, fiel

14、dnames=None, restkey=None, restval=None, dialect=excel, *args, *kwds)第20頁,共44頁。6.5.2寫入CSV文件方式1:使用writer()函數來寫csv文件,返回一個writer對象。writer對象可以使用writerow()寫一行數據,或者使用writerows()寫多行數據,csv.writer(csvfile, dialect=excel, *fmtparams)方式2:使用DictWriter把字典類型的數據寫入到csv文件中:classcsv.DictWriter(csvfile,fieldnames,rest

15、val=,extrasaction=raise,dialect=excel,*args,*kwds)第21頁,共44頁。本章內容6.1 打開和關閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結第22頁,共44頁。6.6XML文件處理XML是可擴展標記語言,它使用tag來分隔數據。處理XML文件,可以使用python中的xml模塊,它包含下面的幾個子模塊:xml.etree.ElementTree: the ElementTree API, a simple

16、 and lightweight XML processorxml.dom: the DOM API definition, 被用來處理xml文件xml.dom.minidom: a minimal DOM implementationxml.dom.pulldom: support for building partial DOM treesxml.sax: SAX2 base classes and convenience functionsxml.parsers.expat: the Expat parser binding第23頁,共44頁。XML文件解析Python使用xml.etr

17、ee.ElementTree來解析處理XML文件內容JSON數據處理1.轉換成JSON字符串Python語言使用dumps()將menu轉換成JSON格式的字符串2.轉換成復雜結構的數據使用loads()函數把JSON字符串轉換成python的結構數據第24頁,共44頁。本章內容6.1 打開和關閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結第25頁,共44頁。6.7.1HTMLParser解析器HTMLParser是python語言用來解析html的模塊

18、。它可以分析出html里面的標簽、數據等等,是一種處理html的簡便途徑。HTMLParser采用的是一種事件驅動的模式,當HTMLParser找到一個特定的標記時,它將會調用一個用戶定義的函數,以此來通知程序處理。它主要的用戶回調函數的命名都是以handler_開頭的,都是HTMLParser的成員函數。當編程人員使用此模塊時,就從HTMLParser派生出新的類,然后重新定義這幾個以handler_開頭的函數即可第26頁,共44頁。6.7.1HTMLParser解析器此模塊包括幾個函數:handle_startendtag:處理開始標簽和結束標簽handle_starttag:處理開始標簽

19、,比如handle_endtag:處理結束標簽,比如handle_charref:處理特殊字符串,就是以 查看下面的rmdir()刪除一個 directory。12os.rename(src, dst)重命名文件或目錄,從 src 到 dst13os.rmdir(path)刪除path指定的空目錄,如果目錄非空,則拋出一個OSError異常。14os.removedirs(path)遞歸刪除目錄。15os.renames(old, new)遞歸地對目錄進行更名,也可以對文件進行更名。16os.stat(path)獲取path指定的路徑的信息,功能等同于C API中的stat()系統(tǒng)調用。17o

20、s.symlink(src, dst)創(chuàng)建一個軟鏈接18os.makedirs(path, mode)遞歸文件夾創(chuàng)建函數。像mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。19os.path.isfile()檢驗給出的路徑是否是一個文件20os.path.isabs()判斷是否是絕對路徑21os.path.getsize(filename)獲取文件大小第32頁,共44頁。6.8.2常用方法的應用1. rename()方法os.rename(current_file_name, new_file_name):需要兩個參數,當前的文件名和新文件名。【例6-

21、18】將重命名一個已經存在的文件test.txt?!纠?-18】采用rename重命名文件重命名文件test.txt到test0.txt。#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 重命名文件test.txt到test0.txt。os.rename( test.txt, test0.txt )第33頁,共44頁。6.8.2常用方法的應用2. remove()方法os.remove(file_name):刪除文件,需要提供要刪除的文件名作為參數。【例6-19】將刪除一個已經存在的文件test.txt?!纠?-19】采用刪除一個已經存在的

22、文件test.txt。#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 刪除一個已經存在的文件test.txtos.remove(test.txt)第34頁,共44頁。6.8.2常用方法的應用3. mkdir()方法os.mkdir(newdir):在當前目錄下創(chuàng)建新的目錄,提供一個包含了要創(chuàng)建的目錄名稱的參數?!纠?-20】將在當前目錄下創(chuàng)建一個新目錄dir?!纠?-20】采用mkdir將在當前目錄下創(chuàng)建一個新目錄dir。#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 創(chuàng)建一個新目錄

23、os.mkdir(dir)第35頁,共44頁。6.8.2常用方法的應用4. chdir()方法os.chdir(newdir):改變當前的目錄,提供一個需要設成當前目錄的目錄名稱的參數。【例6-21】將進入/home/newdir目錄。【例6-21】采用chdir進入/home/newdir目錄。#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 將當前目錄改為/home/newdiros.chdir(/home/newdir)getcwd第36頁,共44頁。本章內容6.1 打開和關閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基

24、本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結第37頁,共44頁。6.9.1異常處理概念異常是一個事件,如果該事件在程序執(zhí)行過程中發(fā)生,將直接影響程序的正常執(zhí)行。一般情況下,在Python無法正常處理程序時就會發(fā)生一個異常。異常是Python對象,表示一個錯誤。當Python腳本發(fā)生異常時我們需要捕獲處理它,否則程序會終止執(zhí)行。捕捉異常一般使用try/except語句。try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息并處理。如果你不想在異常發(fā)生時結束你的程序,只需在try里捕獲它。第38頁,共44頁。6.9.2異常處理語法:以下為簡單的try.except.else的語法:try: #運行別的代碼except : #如果在try部份引發(fā)了name異常except ,: #如果引發(fā)了name異常,獲得附加的數據else: #如果沒有異常發(fā)生第39頁,共44頁。6.9.3異常參數一個異??梢詭蠀?,可作為輸出的異常信息參數。編程人員可以通過except語句來捕獲異常的參數,代碼格式如下

溫馨提示

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

評論

0/150

提交評論