Python程序設(shè)計(jì)第6章+文件操作_第1頁(yè)
Python程序設(shè)計(jì)第6章+文件操作_第2頁(yè)
Python程序設(shè)計(jì)第6章+文件操作_第3頁(yè)
Python程序設(shè)計(jì)第6章+文件操作_第4頁(yè)
Python程序設(shè)計(jì)第6章+文件操作_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Python程序設(shè)計(jì)第1章初識(shí)Python程序目錄/CONTENTS第2章程序基本構(gòu)成第3章控制結(jié)構(gòu)第4章函數(shù)第5章復(fù)合數(shù)據(jù)類(lèi)型第6章文件操作第7章數(shù)據(jù)可視化第8章圖像處理第6章文件操作了解文件的分類(lèi)掌握文件的打開(kāi)關(guān)閉方法掌握文本文件讀寫(xiě)操作方法了解二進(jìn)制文件的讀寫(xiě)操作方法了解os與os.path模塊在文件操作中的用法了解shutil模塊提供的支持文件和文件夾操作的常用方法LearningTarget學(xué)習(xí)目標(biāo)6.1文件基礎(chǔ)知識(shí)文件是長(zhǎng)期保存數(shù)據(jù)并允許數(shù)據(jù)的重復(fù)使用、修改和共享的重要方式。文件可以包含任何數(shù)據(jù)內(nèi)容,如:圖形、圖像、音頻、視頻、數(shù)據(jù)庫(kù)文件、可執(zhí)行文件等。6.1文件基礎(chǔ)知識(shí)按文件中數(shù)據(jù)的組織形式,可以把文件分為文本文件和二進(jìn)制文件兩大類(lèi)。1.文本文件文本文件一般由單一特定編碼的字符組成(如UTF-8編碼),可以被看作是存儲(chǔ)在磁盤(pán)上的長(zhǎng)字符串,由若干文本行組成,內(nèi)容容易統(tǒng)一展示和閱讀。大部分的文本文件都可以通過(guò)文本編輯軟件或文字處理軟件(如記事本、gedit)直接進(jìn)行創(chuàng)建、閱讀和修改。2.二進(jìn)制文件二進(jìn)制文件沒(méi)有統(tǒng)一字符編碼,這是它和文本文件的最主要區(qū)別。二進(jìn)制文件把信息以字節(jié)串(bytes)進(jìn)行存儲(chǔ),文件內(nèi)部數(shù)據(jù)的組織格式與文件用途有關(guān)。常見(jiàn)的如圖形和圖像文件、音頻和視頻文件、可執(zhí)行文件、各種數(shù)據(jù)庫(kù)文件等,都屬于二進(jìn)制文件。這些文件通常無(wú)法被直接閱讀和理解。6.1.1

文件分類(lèi)6.1文件基礎(chǔ)知識(shí)6.1.2字符編碼字符編碼(英語(yǔ):Characterencoding)也稱(chēng)字集碼,是把字符集中的字符編碼為指定集合中某一對(duì)象(例如:比特模式、自然數(shù)序列、8位組或者電脈沖),以便文本在計(jì)算機(jī)中存儲(chǔ)和通過(guò)通信網(wǎng)絡(luò)的傳遞。通俗來(lái)講,就是計(jì)算機(jī)只能處理數(shù)字,如果要處理文本,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理。6.1文件基礎(chǔ)知識(shí)6.1.2字符編碼最早的編碼表被稱(chēng)為ASCII編碼,只有127個(gè)字母被編碼到計(jì)算機(jī)里。為了滿足國(guó)內(nèi)在計(jì)算機(jī)中使用漢字的需要,中國(guó)國(guó)家標(biāo)準(zhǔn)總局發(fā)布了一系列的漢字字符集國(guó)家標(biāo)準(zhǔn)編碼,統(tǒng)稱(chēng)為GB碼,或國(guó)標(biāo)碼。GB2312碼是中華人民共和國(guó)國(guó)家漢字信息交換用編碼,GBK是對(duì)GB2312-80的擴(kuò)展。世界上其他語(yǔ)言,如日文、韓文等也有各自的編碼方式。將世界上所有的符號(hào)都納入一個(gè)編碼表,這就是Unicode編碼。為了提高Unicode的編碼效率,于是就出現(xiàn)了UTF-8編碼。6.1文件基礎(chǔ)知識(shí)6.1.2字符編碼Python3默認(rèn)編碼為Unicode,由str類(lèi)型表示,二進(jìn)制數(shù)據(jù)使用bytes類(lèi)型表示。在實(shí)際應(yīng)用中,我們經(jīng)常將字符類(lèi)型和字節(jié)類(lèi)型相互轉(zhuǎn)換。1.encode([encoding]):編碼,將Unicode字符串轉(zhuǎn)換成特定字符編碼對(duì)應(yīng)的字節(jié)串的過(guò)程。其中,encoding是python的編碼方式。2.decode([encoding]):解碼,將特定字符編碼的字節(jié)串轉(zhuǎn)換為對(duì)應(yīng)的Unicode字符串的過(guò)程。其中,encoding是python的編碼方式。6.1文件基礎(chǔ)知識(shí)6.1.2字符編碼>>>s="今天真高興">>>s_gbk=s.encode('gbk')>>>s_gbkb'\xbd\xf1\xcc\xec\xd5\xe6\xb8\xdf\xd0\xcb'>>>type(s_gbk)<class'bytes'>>>>s2=b'\xbd\xf1\xcc\xec\xd5\xe6\xb8\xdf\xd0\xcb'>>>s2_gbk=s2.decode('gbk')>>>s2_gbk今天真高興>>>type(s2_gbk)<class'str'>6.1文件基礎(chǔ)知識(shí)6.1.2字符編碼注意:unicode,utf-8,gb2312,gbk,雖然都能表示各種字符,但是各種字符在各種編碼方式下的碼是不一樣的,用什么格式編碼,通常用什么格式解碼。以下代碼示例:>>>name="天天好心情">>>bs=name.encode("gb2312")>>>bsb'\xcc\xec\xcc\xec\xba\xc3\xd0\xc4\xc7\xe9'>>>bs2=name.encode("utf-8")>>>bs2b'\xe5\xa4\xa9\xe5\xa4\xa9\xe5\xa5\xbd\xe5\xbf\x83\xe6\x83\x85'#同一字符串name,不同編碼后結(jié)果不同>>>name_dc=bs.decode("utf-8")#不能用utf-8解碼,會(huì)有異常Traceback(mostrecentcalllast):File"<pyshell#9>",line1,in<module>

name_dc=bs.decode("utf-8")UnicodeDecodeError:'utf-8'codeccan'tdecodebyte0xccinposition0:invalidcontinuationbyte>>>name_dc=bs.decode("gb2312")#用gb2312解碼,沒(méi)有問(wèn)題>>>name_dc天天好心情6.2文件的打開(kāi)和關(guān)閉6.2.1

文件的打開(kāi)Python對(duì)文本文件和二進(jìn)制文件采用統(tǒng)一的操作步驟,即”打開(kāi)——操作——關(guān)閉“。Python通過(guò)解釋器內(nèi)置的open()函數(shù)打開(kāi)一個(gè)文件,可以指定打開(kāi)模式,并創(chuàng)建文件對(duì)象。6.2文件的打開(kāi)和關(guān)閉6.2.1

文件的打開(kāi)open()函數(shù)的格式:文件對(duì)象名=open(<文件名>[,打開(kāi)模式])文件名指定被打開(kāi)的文件名稱(chēng),如果要打開(kāi)的文件不在當(dāng)前目錄中,則需要指定相對(duì)路徑或絕對(duì)路徑。打開(kāi)模式用于控制使用何種方式打開(kāi)文件6.2文件的打開(kāi)和關(guān)閉6.2.1

文件的打開(kāi)open()函數(shù)提供的打開(kāi)模式,如表6-1所示。

模式

說(shuō)明r讀模式(默認(rèn)模式,可省略),如果文件不存在則拋出異常w寫(xiě)模式,如果文件已存在,先清空原有內(nèi)容a追加模式,不覆蓋文件中原有內(nèi)容b二進(jìn)制模式(可與其他模式組合使用)t文本模式(默認(rèn)模式,可省略)+讀、寫(xiě)模式(可與其他模式組合使用)表6-1文件的打開(kāi)模式6.2文件的打開(kāi)和關(guān)閉6.2.1

文件的打開(kāi)例:采用只讀模式,打開(kāi)當(dāng)前目錄中的file1.txt文件:f1=open(‘file1.txt’,’r’)采用寫(xiě)模式,打開(kāi)當(dāng)前目錄中的file2.txt文件:f2=open(‘file2.txt’,’w’)6.2文件的打開(kāi)和關(guān)閉6.2.2

文件的關(guān)閉當(dāng)文件的內(nèi)容操作完以后,一定要關(guān)閉文件,以保證所做的任何修改都得到保存。該方法的使用格式如下:文件對(duì)象名.close()例如:f1.close()

f2.close()6.2文件的打開(kāi)和關(guān)閉6.2.3

打開(kāi)文件時(shí)使用with語(yǔ)句打開(kāi)文件后,需要及時(shí)關(guān)閉,在使用with語(yǔ)句的時(shí)候,無(wú)論是否拋出錯(cuò)誤,都能夠保證with語(yǔ)句執(zhí)行完畢后關(guān)閉已經(jīng)打開(kāi)的文件。with語(yǔ)句的用法如下:withopen(<文件名>[,打開(kāi)模式])asfp:#此處為通過(guò)文件對(duì)象fp讀寫(xiě)文件內(nèi)容的語(yǔ)句>>>withopen('test.txt','r')asfp:

fp.read()例如:6.3

文本文件的操作文件被打開(kāi)后,根據(jù)打開(kāi)方式的不同可以對(duì)文件進(jìn)行相應(yīng)的讀寫(xiě)操作。當(dāng)文件以文本文件打開(kāi)時(shí),讀寫(xiě)按照字符串方式;當(dāng)文件以二進(jìn)制文件方式打開(kāi)時(shí),讀寫(xiě)按照字節(jié)流方式。文件對(duì)象常用方法,如表6-2所示。6.3

文本文件的操作表6-2文件對(duì)象常用方法操作方法說(shuō)明close()把緩沖區(qū)的內(nèi)容寫(xiě)入文件,同時(shí)關(guān)閉文件,并釋放文件對(duì)象flush()把緩沖區(qū)的內(nèi)容寫(xiě)入文件,但不關(guān)閉文件read([size])從文本文件中讀取size個(gè)字符(Python3.x)的內(nèi)容作為結(jié)果返回,或從二進(jìn)制文件中讀取指定數(shù)量的字節(jié)并返回,如果省略size則表示讀取所有內(nèi)容readable()測(cè)試當(dāng)前文件是否可讀readline()從文本文件中讀取一行內(nèi)容作為結(jié)果返回readlines()把文本文件中的每行文本作為一個(gè)字符串存入列表中,返回該列表,對(duì)于大文件會(huì)占用較多內(nèi)存,不建議使用seek(offset[,whence])把文件指針移動(dòng)到新的字節(jié)位置,offset表示相對(duì)于whence的位置。whence為0表示從文件頭開(kāi)始計(jì)算,1表示從當(dāng)前位置開(kāi)始計(jì)算,2表示從文件尾開(kāi)始計(jì)算,默認(rèn)為0seekable()測(cè)試當(dāng)前文件是否支持隨機(jī)訪問(wèn),如果文件不支持隨機(jī)訪問(wèn),則調(diào)用方法seek()、tell()和truncate()時(shí)會(huì)拋出異常tell()返回文件指針的當(dāng)前位置writable()測(cè)試當(dāng)前文件是否可寫(xiě)write(s)把s的內(nèi)容寫(xiě)入文件writelines(s)把字符串列表寫(xiě)入文本文件,不添加換行符6.3

文本文件的操作6.3.1文本文件的操作【例6.1】向文本文件寫(xiě)入內(nèi)容>>>s='文本文件的讀取方法\n文本文件的寫(xiě)入方法\n'>>>f=open('test.txt','a+')>>>f.write(s)20>>>f.close()若使用with語(yǔ)句,則代碼為:>>>s='文本文件的讀取方法\n文本文件的寫(xiě)入方法\n'>>>withopen('test.txt','a+')asf:

f.write(s)206.3

文本文件的操作6.3.1文本文件的操作【例6.2】讀文本文件中的內(nèi)容>>>fp=open('test.txt','r')>>>print(fp.read(6))#從文件中讀取前6個(gè)字符,延續(xù)前面的代碼文本文件的讀>>>fp.seek(0)#文件指針移動(dòng)到文件頭0>>>print(fp.read(12))#從文件中讀取前12個(gè)字符文本文件的讀取方法文本>>>fp.close()6.3

文本文件的操作6.3.2采用CSV格式對(duì)數(shù)據(jù)文件的操作逗號(hào)分隔值(Comma-SeparatedValues,CSV),有時(shí)也稱(chēng)為字符分隔值,其文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本)。純文本意味著該文件是一個(gè)字符序列。例如:文件test.csv中的數(shù)據(jù)是采用CSV格式存儲(chǔ)的城市,環(huán)比,同比,定基北京,101.5,120.7,121.4上海,101.2,127.3,127.8廣州,101.3,119.4,1206.3

文本文件的操作6.3.2采用CSV格式對(duì)數(shù)據(jù)文件的操作CSV格式存儲(chǔ)的文件一般采用.csv為擴(kuò)展名,可以通過(guò)Windows平臺(tái)上的記事本或微軟OfficeExcel工具打開(kāi),也可以在其他操作系統(tǒng)平臺(tái)上用文本編輯工具打開(kāi)。一般的表格數(shù)據(jù)處理工具(如微軟OfficeExcel等)都可以將數(shù)據(jù)另存為或?qū)С鯟SV格式,用于不同工具間進(jìn)行數(shù)據(jù)交換?!纠?.3】將列表數(shù)據(jù)寫(xiě)入CSV格式文件test.csvlst=['深圳','101.5','120.7','121.4']withopen('test.csv’,‘a(chǎn)+’)asfp:

fp.write(",".join(lst)+"\n")#將列表數(shù)據(jù)生成字符串,并在末尾加換行符6.3

文本文件的操作6.3.2采用CSV格式對(duì)數(shù)據(jù)文件的操作【例6.4】從文件test.csv中讀取數(shù)據(jù),去掉內(nèi)容中的逗號(hào),打印到屏幕。lst=[]withopen('test.csv','r')asfp:forlineinfp:line=line.replace("\n","")

lst=line.split(",")

lns=""forsinlst:

lns+="{}\t".format(s)print(lns)運(yùn)行后的輸出結(jié)果如下:城市 環(huán)比 同比 定基 北京 101.5 120.7 121.4 上海 101.2 127.3 127.8 廣州 101.3 119.4 120 深圳 101.5 120.7 121.4 6.4

二進(jìn)制文件的操作圖形圖像文件、音視頻文件、Office文檔、可執(zhí)行文件等均屬于二進(jìn)制文件。二進(jìn)制文件可以使用文件對(duì)象的常用方法。withopen('sample.dat','rb')asf:data=f.readlines()withopen('sample_new.dat','wb')asf:

f.writelines(data)但,對(duì)于二進(jìn)制文件,需要通過(guò)序列化和反序列化來(lái)處理。所謂序列化,簡(jiǎn)單地說(shuō)就是把內(nèi)存中的數(shù)據(jù)在不丟失其類(lèi)型信息的情況下轉(zhuǎn)成對(duì)象的二進(jìn)制形式的過(guò)程,對(duì)象序列化后的形式經(jīng)過(guò)正確的反序列化過(guò)程應(yīng)該能夠準(zhǔn)確無(wú)誤地恢復(fù)為原來(lái)的對(duì)象。即數(shù)據(jù)類(lèi)型序列化與反序列化的過(guò)程分別是編碼和解碼的過(guò)程。6.4

二進(jìn)制文件的操作Python中常用的序列化模塊有json、pickle、struct、marshal等。本節(jié)主要介紹json和pickle模塊。6.4.1json模塊JSON(JavaScriptObjectNotation)是一個(gè)輕量級(jí)的數(shù)據(jù)交換格式,Python標(biāo)準(zhǔn)庫(kù)json完美實(shí)現(xiàn)了該格式。json庫(kù)的4個(gè)常用操作函數(shù)如表6-3所示。6.4

二進(jìn)制文件的操作6.4.1json模塊表6-3json庫(kù)操作文件函數(shù)函數(shù)說(shuō)明json.dumps(obj)將Python的數(shù)據(jù)類(lèi)型轉(zhuǎn)換為JSON格式,編碼過(guò)程json.loads(string)將JSON格式字符串轉(zhuǎn)換為Python數(shù)據(jù)類(lèi)型,解碼過(guò)程json.dump(obj,fp)與dumps()功能一致,輸出到文件fpjson.load(fp)與loads()功能一致,從文件fp讀入>>>importjson>>>json.dumps(['a','b','c'])#序列化列表對(duì)象,編碼過(guò)程'["a","b","c"]'>>>json.loads(_)#反序列化,解碼過(guò)程['a','b','c']>>>json.dumps({'a':1,'b':2,'c':3})'{"a":1,"b":2,"c":3}'>>>json.loads(_){'a':1,'b':2,'c':3}6.4

二進(jìn)制文件的操作6.4.1json模塊【例6.5】使用json模塊讀寫(xiě)文件importjsondic={'a':1,'b':[1,2,3,4,5]}withopen('test.txt','w')asfp:#將內(nèi)容序列化并寫(xiě)入文本文件

json.dump(dic,fp)withopen('test.txt')asfp:#讀取文件內(nèi)容并反序列化

print(json.load(fp))運(yùn)行結(jié)果為:{'a':1,'b':[1,2,3,4,5]}6.4

二進(jìn)制文件的操作6.4.2pickle模塊python中幾乎所有的數(shù)據(jù)類(lèi)型(列表,字典,集合,類(lèi)等)都可以用pickle來(lái)序列化。常用的兩個(gè)方法:(1)pickle.dump(obj,file):序列化對(duì)象,并將結(jié)果數(shù)據(jù)流寫(xiě)入到文件對(duì)象中。(2)pickle.load(file):反序列化對(duì)象。將文件中的數(shù)據(jù)解析為一個(gè)Python對(duì)象。6.4

二進(jìn)制文件的操作6.4.2pickle模塊【例6.6】使用pickle模塊寫(xiě)入二進(jìn)制文件importpicklea='apple'b={1:'one',2:'two',3:'three'}c=['dog','cat','pig']f1=open('demo_pickle.dat','wb')pickle.dump(a,f1)pickle.dump(b,f1)pickle.dump(c,f1)f1.close()6.4

二進(jìn)制文件的操作6.4.2pickle模塊【例6.7】讀取【例6.6】中寫(xiě)入的二進(jìn)制文件的內(nèi)容importpicklef2=open('demo_pickle.dat','rb')a2=pickle.load(f2)b2=pickle.load(f2)c2=pickle.load(f2)print(a2)print(b2)print(c2)f2.close()輸出結(jié)果為:apple{1:'one',2:'two',3:'three'}['dog','cat','pig']6.5文件級(jí)操作6.5.1os與os.path模塊Python的標(biāo)準(zhǔn)庫(kù)中的os模塊除包含普遍的操作系統(tǒng)功能和訪問(wèn)文件系統(tǒng)的簡(jiǎn)便方法之外,還提供了大量文件級(jí)操作的方法。如表6-4所示。表6-4os模塊常用文件操作方法表方法說(shuō)明access(path,mode)測(cè)試是否可以按照mode指定的權(quán)限訪問(wèn)文件open(path,flags,mode=0o777,*,dir_fd=None)按照mode指定的權(quán)限打開(kāi)文件,默認(rèn)權(quán)限為可讀、可寫(xiě)、可執(zhí)行chmod(path,mode,*,dir_fd=None,follow_symlinks=True)改變文件的訪問(wèn)權(quán)限listdir(path)返回path目錄下的文件和目錄列表remove(path)刪除指定的文件,要求用戶擁有刪除文件的權(quán)限,并且文件沒(méi)有只讀或其他特殊屬性rename(src,dst)重命名文件或目錄,可以實(shí)現(xiàn)文件的移動(dòng),若目標(biāo)文件已存在則拋出異常,不能跨越磁盤(pán)或分區(qū)replace(old,new)重命名文件或目錄,若目標(biāo)文件已存在則直接覆蓋,不能跨越磁盤(pán)或分區(qū)stat(path)返回文件的所有屬性6.5文件級(jí)操作6.5.1os與os.path模塊os.path模塊提供了大量用于路徑判斷、切分、連接以及文件夾遍歷的方法,如表6-5所示。表6-5os.path模塊常用文件操作方法方法說(shuō)明abspath(path)返回絕對(duì)路徑dirname(p)返回目錄的路徑samefile(f1,f2)測(cè)試f1和f2這兩個(gè)路徑是否引用的同一個(gè)文件exists(path)判斷文件是否存在getsize(filename)返回文件的大小getctime(filename)返回文件的創(chuàng)建時(shí)間getmtime(filename)返回文件的最后修改時(shí)間getatime(filename)返回文件的最后訪問(wèn)時(shí)間其他詳細(xì)的方法列表可以通過(guò)dir(os)和dir(os.path)查看。6.5文件級(jí)操作6.5.1os與os.path模塊【例6.8】os模塊和os.path模塊的簡(jiǎn)單用法>>>importos>>>importos.path>>>os.path.exists(‘test.txt’)#此時(shí)文件存在True>>>os.rename('test.txt','test_new.txt')#實(shí)現(xiàn)文件的改名和移動(dòng)>>>os.path.exists('test.txt')#原來(lái)的文件不存在了False>>>path='C:\\Users\Administrator\\Desktop\\test_new.txt'>>>os.path.dirname(path)#返回path的路徑'C:\\Users\\Administrator\\Desktop'6.5文件級(jí)操作6.5.1os與os.path模塊【例6.9】將當(dāng)前目錄的所有擴(kuò)展名為“htm”的文件修改為擴(kuò)展名為“html”的文件importosfile_list=[]forfilenameinos.listdir():#遍歷當(dāng)前目錄下的文件和目錄列表

iffilename.endswith('.htm'):#查找以htm結(jié)尾的文件

file_list.append(filename)forfilenameinfile_list:newname=filename[:-3]+'html'#新的擴(kuò)展名為htmlos.rename(filename,newname)#重命名文件

print(filename+"重命名為:"+newname)6.5文件級(jí)操作6.5.2shutil模塊shutil模塊也提供了大量支持文件和文件夾操作的方法,如:1.copy(src,dst):復(fù)制文件,新文件具有同樣的文件屬性,如果目標(biāo)文件已存在則拋出異常。2.copyfile(src,dst):復(fù)制文件,不復(fù)制文件屬性,如果目標(biāo)文件已存在則直接覆蓋。>>>importshutil>>>shutil.copyfile('test.txt','test_new.txt')'test_new.txt'6.6

目錄操作os模塊常用的目錄操作函數(shù),如表6-6所示。表6-6os模塊常用的目錄操作函數(shù)函數(shù)名稱(chēng)說(shuō)明mkdir(path[,mode=0o777])創(chuàng)建目錄,要求上級(jí)目錄必須存在makedirs(path1/path2…,mode=511)創(chuàng)建多級(jí)目錄,會(huì)根據(jù)需要自動(dòng)創(chuàng)建中間缺失的目錄rmdir(path)刪除目錄,要求該文件夾中不能有文件或子文件夾removedirs(path1/path2…)刪除多級(jí)目錄getcwd()返回當(dāng)前工作目錄chdir(path)把path設(shè)為當(dāng)前工作目錄walk(top,topdown=True,onerror=None)遍歷目錄樹(shù),該方法返回一個(gè)元組,包括3個(gè)元素:所有路徑名、所有目錄列表與文件列表6.6

目錄操作os模塊方法演示。>>>importos>>>os.getcwd()#返回當(dāng)前工作目錄'D:\\lianxi\\MyPythonPro'>>>path=os.getcwd()#將path設(shè)為當(dāng)前目錄>>>os.mkdir(path+'\\test')#創(chuàng)建新目錄>>>os.chdir(path+'\\test')#更改當(dāng)前的工作目錄>>>os.getcwd()#返回當(dāng)前工作目錄,已經(jīng)改變'D:\\lianxi\\MyPythonPro\\test'>>>os.chdir(path)#重新將path設(shè)為當(dāng)前目錄>>>os.rmdir(‘test’)#刪除當(dāng)前目錄下的test子目錄6.7文件操作實(shí)例6.7.1文本文件逐行打印用戶輸入文件路徑,以文本模式讀文件內(nèi)容并逐行打印,代碼如下:fname=input("請(qǐng)輸入文件名:")withopen(fname,“r”)asfp:forlineinfp.readlines():print(line)上述代碼完成了題目的要求,但是存在一些缺點(diǎn):當(dāng)讀入文件非常大時(shí),一次性將內(nèi)容讀取到列表(readlines()方法返回字符串列表)中會(huì)占用很多內(nèi)存,影響程序執(zhí)行速度。一個(gè)合理的方法是逐行讀入內(nèi)容到內(nèi)存,并逐行處理。Python將文件本身作為一個(gè)行序列,遍歷文件的所有行可以直接按如下的方式完成。fname=input("請(qǐng)輸入文件名:")withopen(fname,“r”)asfp:forlineinfp:print(line)注:若出現(xiàn)解碼之類(lèi)的錯(cuò)誤,則需添加編碼方式,encoding=

溫馨提示

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

評(píng)論

0/150

提交評(píng)論