




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Python程序設(shè)計第1頁,共44頁。6文件操作第章第2頁,共44頁。 Python作為服務(wù)器語言,跟數(shù)據(jù)庫交互的操作比較多,但是一般性操作或者信息的甄選需要用到各種文件,因此文件操作對于Python語言也非常重要。為了讓編程人員進(jìn)一步能夠接觸更多的領(lǐng)域:文件。那么什么是文件呢?文件是計算機(jī)中由操作系統(tǒng)管理的具有名字的存儲區(qū)域。本章主要介紹了python文件和目錄的操作方法,簡明總結(jié)了文件和目錄操作中常用的模塊、函數(shù),讓程序員在編寫程序調(diào)用期間存儲數(shù)據(jù),并且可以處理來自其他程序的數(shù)據(jù)。前言第3頁,共44頁。本章內(nèi)容6.1 打開和關(guān)閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操
2、作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結(jié)第4頁,共44頁。6.1.1打開文件open函數(shù)語法如下: 語法:file_object = open(fiel_name, access_mode=r, buffering=-1)。File_name是要打開的文件名字的字符串a(chǎn)ccess_mode可選參數(shù),表示文件打開的模式,r,w,a 分別代表讀取,寫入和追加??蛇x參數(shù)buffering用于指示訪問文件所采用的緩沖方式第5頁,共44頁。6.1.1打開文件假設(shè)有一個文件名為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關(guān)閉文件Python語言關(guān)閉文件通過調(diào)用close()方法關(guān)閉文件,調(diào)用close()方法將會終止對外部文件的鏈接。當(dāng)文件對象被收回時,這個對象的內(nèi)存空間也會自動被收回。代碼如下所示:#!/u
4、sr/bin/pythonfileHandle = open ( test.txt, a )fileHandle.write ( nnBottom line. )fileHandle.close()第7頁,共44頁。本章內(nèi)容6.1 打開和關(guān)閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結(jié)第8頁,共44頁。6.2.1讀取文件讀取文件主要有三種方式,方式如下:read()函數(shù):用來直接讀取指定Size的內(nèi)容到字符串中,缺省參數(shù)為全部內(nèi)容,可以指定讀取數(shù)目,默認(rèn)
5、是文件將被讀取直至末尾,返回一個String類型對象。readline()函數(shù):讀取打開文件的一行,包括行結(jié)束符,也可選size參數(shù),默認(rèn)為-1,代表直至讀到行結(jié)束符。每執(zhí)行一次會自動獲取往下一行的內(nèi)容,返回一個字符串。當(dāng)讀取到最后一行再執(zhí)行此函數(shù)時,會返回一個空字符串,不會報錯。readlines()函數(shù):獲取文件所有的內(nèi)容,并返回一個以每行內(nèi)容作為一個String元素的List類型對象,本質(zhì)是通過循環(huán)調(diào)用readline()實現(xiàn)的。有一個可選參數(shù)sizhint代表返回的最大字節(jié)大小。第9頁,共44頁。6.2.2寫入文件寫入文件write方法和讀取文件read方法功能相反,它把含有文本數(shù)據(jù)或
6、二進(jìn)制數(shù)據(jù)塊的字符寫到文件中去,將傳遞的String參數(shù)寫入并覆蓋文件內(nèi)容,返回None。需要執(zhí)行close()或flush()后才會將內(nèi)存的數(shù)據(jù)寫入到文件中。當(dāng)在沒有調(diào)用close()函數(shù)之前,可以調(diào)用多次write()函數(shù)來實現(xiàn)追加效果,即后來的write()函數(shù)的寫入的內(nèi)容并不會覆蓋前一次使用write()函數(shù)寫入的內(nèi)容,但是不會自動添加換行符。第10頁,共44頁。本章內(nèi)容6.1 打開和關(guān)閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結(jié)第11頁,共4
7、4頁。6.3.1獲取當(dāng)前文件指針tell方法獲取當(dāng)前指針位置(相對文件起始處),獲取當(dāng)前文件指針代碼見【例6-3】所示?!纠?-4】采用tell方法獲取當(dāng)前指針位置,并打印輸出。#!/usr/bin/pythonpwd = open(demo.txt,w+)positon=pwd.tell()print(positon)#位置應(yīng)該是0pwd.close()第12頁,共44頁。6.3.2截斷文件truncate函數(shù)用于截斷文件,默認(rèn)從文件指針指向的位置開始截斷文件內(nèi)容,也可以通過傳遞int參數(shù)n來指定截斷的起始位置,n為null的時候,即truncate()表示從當(dāng)前位置(文件指針位置)起截斷,
8、后面字符都刪除。截斷文件代碼如【例6-5】所示?!纠?-5】采用truncate方法截斷文件,并打印輸出。#!/usr/bin/pythonpwd = open(demo.txt,r+)positon=pwd.tell()print(positon) #位置應(yīng)該是0pwd.truncate(5) #從第五個位置開始截斷,后面全部擦除。print(pwd.tell()pwd.close()第13頁,共44頁。6.3.3轉(zhuǎn)移文件指針seek函數(shù)可以接收偏移量和選項作為參數(shù),返回None。格式:seek(offset, where)有三個模式。 1)當(dāng)whenc=0時,將文件指針從文件頭部轉(zhuǎn)移到”偏
9、移量”指定的字符處。2)當(dāng)whence=1時,將文件指針從文件的當(dāng)前位置往后轉(zhuǎn)移”偏移量”指定的字符數(shù)。3)當(dāng)whence=2時,將文件指針從文件尾部向前移動”偏移量”指定的字符數(shù)。第14頁,共44頁。本章內(nèi)容6.1 打開和關(guān)閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結(jié)第15頁,共44頁。6.4.1文件訪問模式序號模式描述1r只讀文件2rb二進(jìn)制讀文件3r+可讀可寫,不會創(chuàng)建不存在的文件 從頭部開始寫,會覆蓋之前此位置的內(nèi)容4rb+二進(jìn)制格式讀寫文件。
10、文件指針將會放在文件的開頭5w只寫文件,如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件6wb二進(jìn)制寫文件7w+讀寫文件。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件8wb+二進(jìn)制讀寫文件。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件9a只追寫文件。從文件底部添加內(nèi)容 不存在則創(chuàng)建10ab二進(jìn)制追寫文件。從文件頂部讀取內(nèi)容 從文件底部添加內(nèi)容 不存在則創(chuàng)建11a+追讀寫文件。從文件頂部讀取內(nèi)容 從文件底部添加內(nèi)容 不存在則創(chuàng)建12ab+追讀寫二進(jìn)制。從文件頂部讀取內(nèi)容 從文件底部添加內(nèi)容 不存在則創(chuàng)建第16頁,共44頁。6.4.2文件對象屬性序號屬性描述1fil
11、e.closedTrue表示文件已經(jīng)關(guān)閉,否則為False2file.encoding文件所用的編碼3file.mode文件打開時的訪問模式4文件名5file.newlines文件文件f中的換行字符串的類型第17頁,共44頁。6.4.3文件的常用方法序號常用方法描述1f.close()關(guān)閉文件對象f,并將屬性f.closed設(shè)置為True2f.fileno()返回底層文件的文件描述符3f.flush()清空文件對象f,并將緩存中的內(nèi)容寫入磁盤(如果有)4f.isatty()如果文件對象與控制臺關(guān)聯(lián),就返回True5f.peek(n)返回n個字節(jié),而不移動文件指針的位置6f.r
12、ead(count)從文件對象f中讀取至多count個字節(jié),如果沒有指定count,就讀 取從當(dāng)前文件指針直至最后的每個字節(jié)。以二進(jìn)制模式讀時,返回bytes對象;以文本模式讀時,返回str對象。如果沒有要讀的內(nèi)容(已到文件結(jié)尾),就返回一個空的bytes或str對象7f.readline(count)讀取下一行(如果指定count,并且在n字符前滿足這一數(shù)值,那么至多讀入count個字節(jié)),包括n8f.readlines(sizehint)讀入到文件結(jié)尾之前的所有行,并以列表形式返回。如果給定sizehint,那么至多讀入大概sizehint個字節(jié)(如果底層文件對象支持第18頁,共44頁。本
13、章內(nèi)容6.1 打開和關(guān)閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結(jié)第19頁,共44頁。6.5.1讀取CSV文件方式1:使用reader()函數(shù)來讀取csv文件,返回一個reader對象。reader對象可以使用迭代獲取其中的每一行,csv.reader(csvfile, dialect=excel, *fmtparams)方式2:使用DicReader()按照字典的方式讀取csv內(nèi)容,class csv.DictReader(csvfile, fiel
14、dnames=None, restkey=None, restval=None, dialect=excel, *args, *kwds)第20頁,共44頁。6.5.2寫入CSV文件方式1:使用writer()函數(shù)來寫csv文件,返回一個writer對象。writer對象可以使用writerow()寫一行數(shù)據(jù),或者使用writerows()寫多行數(shù)據(jù),csv.writer(csvfile, dialect=excel, *fmtparams)方式2:使用DictWriter把字典類型的數(shù)據(jù)寫入到csv文件中:classcsv.DictWriter(csvfile,fieldnames,rest
15、val=,extrasaction=raise,dialect=excel,*args,*kwds)第21頁,共44頁。本章內(nèi)容6.1 打開和關(guān)閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結(jié)第22頁,共44頁。6.6XML文件處理XML是可擴(kuò)展標(biāo)記語言,它使用tag來分隔數(shù)據(jù)。處理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文件內(nèi)容JSON數(shù)據(jù)處理1.轉(zhuǎn)換成JSON字符串Python語言使用dumps()將menu轉(zhuǎn)換成JSON格式的字符串2.轉(zhuǎn)換成復(fù)雜結(jié)構(gòu)的數(shù)據(jù)使用loads()函數(shù)把JSON字符串轉(zhuǎn)換成python的結(jié)構(gòu)數(shù)據(jù)第24頁,共44頁。本章內(nèi)容6.1 打開和關(guān)閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結(jié)第25頁,共44頁。6.7.1HTMLParser解析器HTMLParser是python語言用來解析html的模塊
18、。它可以分析出html里面的標(biāo)簽、數(shù)據(jù)等等,是一種處理html的簡便途徑。HTMLParser采用的是一種事件驅(qū)動的模式,當(dāng)HTMLParser找到一個特定的標(biāo)記時,它將會調(diào)用一個用戶定義的函數(shù),以此來通知程序處理。它主要的用戶回調(diào)函數(shù)的命名都是以handler_開頭的,都是HTMLParser的成員函數(shù)。當(dāng)編程人員使用此模塊時,就從HTMLParser派生出新的類,然后重新定義這幾個以handler_開頭的函數(shù)即可第26頁,共44頁。6.7.1HTMLParser解析器此模塊包括幾個函數(shù):handle_startendtag:處理開始標(biāo)簽和結(jié)束標(biāo)簽handle_starttag:處理開始標(biāo)簽
19、,比如handle_endtag:處理結(jié)束標(biāo)簽,比如handle_charref:處理特殊字符串,就是以 查看下面的rmdir()刪除一個 directory。12os.rename(src, dst)重命名文件或目錄,從 src 到 dst13os.rmdir(path)刪除path指定的空目錄,如果目錄非空,則拋出一個OSError異常。14os.removedirs(path)遞歸刪除目錄。15os.renames(old, new)遞歸地對目錄進(jìn)行更名,也可以對文件進(jìn)行更名。16os.stat(path)獲取path指定的路徑的信息,功能等同于C API中的stat()系統(tǒng)調(diào)用。17o
20、s.symlink(src, dst)創(chuàng)建一個軟鏈接18os.makedirs(path, mode)遞歸文件夾創(chuàng)建函數(shù)。像mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。19os.path.isfile()檢驗給出的路徑是否是一個文件20os.path.isabs()判斷是否是絕對路徑21os.path.getsize(filename)獲取文件大小第32頁,共44頁。6.8.2常用方法的應(yīng)用1. rename()方法os.rename(current_file_name, new_file_name):需要兩個參數(shù),當(dāng)前的文件名和新文件名?!纠?-
21、18】將重命名一個已經(jīng)存在的文件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常用方法的應(yīng)用2. remove()方法os.remove(file_name):刪除文件,需要提供要刪除的文件名作為參數(shù)?!纠?-19】將刪除一個已經(jīng)存在的文件test.txt?!纠?-19】采用刪除一個已經(jīng)存在的
22、文件test.txt。#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 刪除一個已經(jīng)存在的文件test.txtos.remove(test.txt)第34頁,共44頁。6.8.2常用方法的應(yīng)用3. mkdir()方法os.mkdir(newdir):在當(dāng)前目錄下創(chuàng)建新的目錄,提供一個包含了要創(chuàng)建的目錄名稱的參數(shù)?!纠?-20】將在當(dāng)前目錄下創(chuàng)建一個新目錄dir?!纠?-20】采用mkdir將在當(dāng)前目錄下創(chuàng)建一個新目錄dir。#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 創(chuàng)建一個新目錄
23、os.mkdir(dir)第35頁,共44頁。6.8.2常用方法的應(yīng)用4. chdir()方法os.chdir(newdir):改變當(dāng)前的目錄,提供一個需要設(shè)成當(dāng)前目錄的目錄名稱的參數(shù)?!纠?-21】將進(jìn)入/home/newdir目錄?!纠?-21】采用chdir進(jìn)入/home/newdir目錄。#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 將當(dāng)前目錄改為/home/newdiros.chdir(/home/newdir)getcwd第36頁,共44頁。本章內(nèi)容6.1 打開和關(guān)閉文件6.2 文件的讀取和寫入6.3 文件指針6.4 文件基
24、本操作6.5 CVS文件處理6.6 XML文件處理6.7 HTML文件處理6.8 文件的其他操作6.9 異常處理6.10本章總結(jié)第37頁,共44頁。6.9.1異常處理概念異常是一個事件,如果該事件在程序執(zhí)行過程中發(fā)生,將直接影響程序的正常執(zhí)行。一般情況下,在Python無法正常處理程序時就會發(fā)生一個異常。異常是Python對象,表示一個錯誤。當(dāng)Python腳本發(fā)生異常時我們需要捕獲處理它,否則程序會終止執(zhí)行。捕捉異常一般使用try/except語句。try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息并處理。如果你不想在異常發(fā)生時結(jié)束你的程序,只需在try里捕獲它。第38頁,共44頁。6.9.2異常處理語法:以下為簡單的try.except.else的語法:try: #運(yùn)行別的代碼except : #如果在try部份引發(fā)了name異常except ,: #如果引發(fā)了name異常,獲得附加的數(shù)據(jù)else: #如果沒有異常發(fā)生第39頁,共44頁。6.9.3異常參數(shù)一個異??梢詭蠀?shù),可作為輸出的異常信息參數(shù)。編程人員可以通過except語句來捕獲異常的參數(shù),代碼格式如下
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西師范大學(xué)《籃球》2023-2024學(xué)年第二學(xué)期期末試卷
- 池州學(xué)院《智能采油裝備》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱信息工程學(xué)院《人力資源開發(fā)與管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京醫(yī)科大學(xué)《鐵路與軌道交通車站工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)江職業(yè)技術(shù)學(xué)院《Photoshop海報設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 金肯職業(yè)技術(shù)學(xué)院《學(xué)前教育統(tǒng)計學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東女子職業(yè)技術(shù)學(xué)院《安裝工程預(yù)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南農(nóng)業(yè)大學(xué)《材料的腐蝕與防護(hù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新鄉(xiāng)學(xué)院《人權(quán)法》2023-2024學(xué)年第二學(xué)期期末試卷
- 杭州萬向職業(yè)技術(shù)學(xué)院《高級管理研究》2023-2024學(xué)年第二學(xué)期期末試卷
- (高清版)DZT 0216-2020 煤層氣儲量估算規(guī)范
- 拖拉機(jī)駕駛員培訓(xùn)(課件)
- TCASWSS 025-2024 老年大學(xué)課程設(shè)置規(guī)范
- 課堂互動和學(xué)生參與度提升
- 兩辦意見八硬措施煤礦安全生產(chǎn)條例宣貫學(xué)習(xí)課件
- 教師課堂教學(xué)語言技能范例課件
- 《體育與健康說課》課件
- 人教版化學(xué)九年級下冊同步練習(xí):第九單元 溶液
- 華南師范大學(xué)附屬小學(xué)招聘教師筆試真題2022
- 山東女子學(xué)院《C語言程序設(shè)計》2022-2023學(xué)年期末試卷
- 2020年中國人身保險產(chǎn)品研究報告
評論
0/150
提交評論